"Bagaimana dengan sedikit latihan untuk otakmu? Kuharap otakmu masih berfungsi dengan baik."

"Sebelumnya, di tabel wadah dan koleksi Anda melihat bahwa antarmuka yang sama dapat memiliki banyak implementasi. Sekarang saya akan memberi tahu Anda mengapa kami membutuhkannya. Dan bagaimana ArrayList berbeda dari LinkedList ."

"Masalahnya, koleksi dapat diimplementasikan dengan cara yang berbeda dan tidak ada implementasi yang selalu ideal. Dalam satu pendekatan, beberapa operasi cepat, tetapi yang lain lambat. Kebalikannya bisa benar untuk pendekatan lain. Tidak ada satu ukuran yang sempurna- solusi yang cocok untuk semua."

"Itulah mengapa keputusan dibuat untuk mengimplementasikan beberapa versi dari koleksi yang sama. Setiap implementasi harus dioptimalkan untuk beberapa rangkaian operasi yang sempit. Beginilah koleksi yang berbeda muncul. Mari pelajari dua kelas sebagai contoh: ArrayList dan LinkedList ."

ArrayList vs. LinkedList - 1

"Secara internal, ArrayList diimplementasikan sebagai array biasa . Itu sebabnya memasukkan elemen di tengah mengharuskan kita terlebih dahulu menggeser semua elemen berikutnya satu per satu, dan kemudian memasukkan elemen baru ke dalam slot kosong. Mendapatkan dan mengatur elemen (dapatkan, atur ) fast , karena operasi ini hanya menangani elemen larik yang relevan."

" LinkedList memiliki struktur internal yang berbeda. Ini diimplementasikan sebagai daftar dengan elemen yang saling berhubungan : sekumpulan elemen berbeda, yang masing-masing menyimpan referensi ke elemen berikutnya dan sebelumnya dalam daftar. Untuk memasukkan elemen ke tengah daftar tersebut, Anda hanya perlu mengubah referensi tetangganya di masa mendatang. Namun, untuk mendapatkan elemen No.130, Anda harus menjalankan setiap objek dari 0 hingga 130. Dengan kata lain, operasi get and set akan lambat . Lihat tabel berikut :"

Keterangan Operasi ArrayList LinkedList
Dapatkan elemen mendapatkan Cepat Lambat
Tetapkan elemen mengatur Cepat Lambat
Tambahkan elemen (ke akhir daftar) menambahkan Cepat Cepat
Masukkan elemen (pada posisi sewenang-wenang) tambahkan(i, nilai) Lambat Cepat
Hapus elemen menghapus Lambat Cepat

"Begitu. Aku mulai memahaminya sekarang. Apakah ada kriteria atau aturan yang akan membantuku mengetahui koleksi mana yang terbaik dalam situasi tertentu?"

"Agar tetap sederhana, saya akan memberi Anda aturan berikut: jika Anda akan sering menyisipkan (atau menghapus) elemen di tengah koleksi, lebih baik menggunakan LinkedList . Dalam semua kasus lain, ArrayList berfungsi lebih baik."

"Kita akan menyelidiki bagaimana strukturnya dalam pelajaran lanjutan, tapi untuk saat ini kita hanya akan berlatih menggunakannya."