"Bagaimana dengan sedikit latihan untuk otak awak? Saya harap ia masih berfungsi."
"Terdahulu, dalam jadual bekas dan koleksi anda melihat bahawa antara muka yang sama boleh mempunyai berbilang pelaksanaan. Sekarang saya akan memberitahu anda sebab kami memerlukannya. Dan bagaimana ArrayList berbeza daripada LinkedList ."
"Perkaranya, koleksi mungkin dilaksanakan dengan cara yang berbeza dan tiada pelaksanaan yang sentiasa ideal. Dalam satu pendekatan, sesetengah operasi adalah pantas, tetapi yang lain lambat. Sebaliknya boleh berlaku untuk pendekatan lain. Tidak ada satu saiz yang sempurna- penyelesaian yang sesuai untuk semua."
"Itulah sebabnya keputusan dibuat untuk melaksanakan beberapa versi koleksi yang sama. Setiap pelaksanaan harus dioptimumkan untuk beberapa set operasi yang sempit. Beginilah bagaimana koleksi yang berbeza muncul. Mari kita kaji dua kelas sebagai contoh: ArrayList dan LinkedList ."
"Secara dalaman, ArrayList dilaksanakan sebagai tatasusunan biasa . Itulah sebabnya memasukkan elemen di tengah memerlukan kita mengalihkan semua elemen yang berjaya dengan satu, dan kemudian meletakkan elemen baharu ke dalam slot percuma. Mendapat dan menetapkan elemen (dapatkan, tetapkan ) adalah pantas , kerana operasi ini hanya menangani elemen tatasusunan yang berkaitan."
" LinkedList mempunyai struktur dalaman yang berbeza. Ia dilaksanakan sebagai senarai dengan elemen yang saling berkaitan : satu set elemen yang berbeza, setiap satunya menyimpan rujukan kepada elemen seterusnya dan sebelumnya dalam senarai. Untuk memasukkan elemen ke tengah senarai sedemikian, anda hanya perlu menukar rujukan jiran masa depannya. Walau bagaimanapun, untuk mendapatkan elemen No. 130, anda perlu menjalankan setiap objek dari 0 hingga 130. Dengan kata lain, operasi dapatkan dan tetapkan akan menjadi perlahan . Lihat jadual berikut :"
Penerangan | Operasi | ArrayList | LinkedList |
---|---|---|---|
Dapatkan elemen | dapatkan | Cepat | Lambat |
Tetapkan elemen | ditetapkan | Cepat | Lambat |
Tambahkan elemen (pada penghujung senarai) | Tambah | Cepat | Cepat |
Sisipkan elemen (pada kedudukan sewenang-wenangnya) | tambah(i, nilai) | Lambat | Cepat |
Alih keluar elemen | keluarkan | Lambat | Cepat |
"Saya faham. Saya mula memahaminya sekarang. Adakah terdapat sebarang kriteria atau peraturan yang akan membantu saya mengetahui koleksi mana yang terbaik dalam situasi tertentu?"
"Untuk memastikannya mudah, saya akan memberikan anda peraturan berikut: jika anda akan kerap memasukkan (atau mengalih keluar) elemen di tengah-tengah koleksi, lebih baik menggunakan LinkedList . Dalam semua kes lain, ArrayList berfungsi dengan lebih baik."
"Kami akan menyelidiki bagaimana ia distrukturkan dalam pelajaran yang lebih maju, tetapi buat masa ini kami hanya akan berlatih menggunakannya."
GO TO FULL VERSION