Rumah > Java > JavaSoalan temu bual > Soalan yang ditanya dalam hampir semua wawancara Java: bercakap tentang perbezaan antara ArrayList dan LinkedList

Soalan yang ditanya dalam hampir semua wawancara Java: bercakap tentang perbezaan antara ArrayList dan LinkedList

Lepaskan: 2023-07-26 15:11:52
ke hadapan
857 orang telah melayarinya

forsword

Hello Semua orang, saya adalah kawan lama anda Qing Ge anda telah menyertai Java Saya percaya semua pelajar yang ditemuduga pernah mengalami perkara ini. Apabila penemuduga bertanya soalan sedemikian, mereka sering ingin menyemak sama ada anda telah mengkaji struktur asas jenis data yang biasa digunakan di Jawa, dan bukannya hanya kekal pada tahap "tahu cara menggunakan". Jadi bagaimana kita menjawab soalan ini dengan baik semasa temuduga dan memuaskan hati penemuduga?

Dalam isu ini, saya akan menumpukan pada titik ujian frekuensi tinggi JavaAnalisis prinsip ArrayList dan LinkedList, saya harap ia dapat membantu anda.

ArrayList和LinkedList的原理进行分析,希望能帮助到你。

ArrayList和LinkedList简介

ArrayList底层是一个Object类型的数组,初始容量是10,支持动态扩容,扩容后的容量是当前容量的1.5倍,它的最大容量是 Integer.MAX_VALUE - 8(但是仍可以扩容到Integer.MAX_VALUE),对于空出的8位,目前的解释是避免一些机器内存溢出,减少出错几率

LinkedList

Pengenalan kepada ArrayList dan LinkedList

🎜

ArrayList code >Lapisan bawah ialah tatasusunan jenis Objek dengan kapasiti awal 10 dan menyokong pengembangan dinamik Kapasiti yang diperluaskan ialah 1.5 kali kapasiti maksimumnya ialah Integer.MAX_VALUE - 8 (tetapi ia masih boleh dikembangkan kepada Integer.MAX_VALUE. ), untuk 8 bit yang dikosongkan, tafsiran semasa ialah <code style="font-size: 14px;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin- kiri: 2px;warna latar belakang: rgba(27, 31, 35, 0.05);keluarga fon: " operator mono consolas monaco menlo monospace break-all rgb>Elakkan beberapa limpahan memori mesin dan kurangkan kemungkinan ralat. 🎜

LinkedListLapisan bawah ialah senarai terpaut dua kali. Kapasiti awal ialah 0. Untuk mengembangkan kapasiti, hanya buat yang baru Hanya halakan nod ke penunjuk. 🎜🎜🎜Untuk memudahkannya menjadi bahasa yang boleh diungkapkan secara lisan supaya pelajar dapat menerangkannya kepada penemuduga semasa temu duga, saya tidak akan menyiarkan arahan tambahan kod sumber di sini Pelajar yang berminat boleh menyemak kod sumber untuk melihat struktur dan kaedah dalaman .Mendalami pemahaman anda tentang bidang ini. 🎜. index. Alamat adalah pantas dan kerumitan masa ialah O(1); n).

Insertion

ArrayList lebih cekap pada sisipan ekor, dengan kerumitan masa O(1), tetapi kecekapan sisipan di lokasi lain agak rendah, memerlukan sejumlah besar pergerakan data, dengan masa kerumitan O(n);

    LinkedList lebih cekap dalam memasukkan elemen di bahagian kepala dan ekor, dan kerumitan masa ialah O(1 Walau bagaimanapun, untuk memasukkan elemen pada kedudukan tertentu di tengah, anda perlukan untuk melintasi untuk mencari kedudukan elemen terlebih dahulu, dan kemudian memasukkannya, yang kompleks.
  • Padam

Mengalih keluar elemen daripada ArrayList memerlukan banyak pergerakan data kecuali nod akhir, dan kerumitan masa ialah O(n); hanya perlu menukar penunjuk penunjuk, tetapi memadamkan elemen memerlukan merentasi dan menanyakan lokasi data, dengan kerumitan masa O(n).

  • Memory Space
  • ArrayList dilaksanakan berdasarkan tatasusunan. senarai terpaut, jadi setiap nod Selain menyimpan data, anda juga perlu menyimpan penunjuk nod sebelumnya dan seterusnya, yang akan memakan sedikit ruang.

Mekanisme pengembangan

  • ArrayList perlu menyalin elemen tatasusunan asal ke tatasusunan baharu setiap kali ia dikembangkan
  • LinkedList tiada senarai perluasan

Kesamaan
  • Keselamatan benang

    ArrayList dan LinkedList kedua-duanya tidak selamat dan boleh menyebabkan masalah bacaan kotor dalam persekitaran berbilang benang Anda boleh menggunakan kaedah Collections.synchronizedList() untuk memastikan keselamatan benang

    Ciri storan

    Elemen yang disimpan semuanya teratur diulang, dan elemen baharu disimpan pada penghujung Senarai.

Atas ialah kandungan terperinci Soalan yang ditanya dalam hampir semua wawancara Java: bercakap tentang perbezaan antara ArrayList dan LinkedList. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:Java学习指南
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan