Disyorkan, 2020

Pilihan Editor

Perbezaan antara HashMap dan LinkedHashMap di Jawa

HashMap dan LinkedHashMap adalah kelas, sama seperti satu sama lain dan digunakan untuk membuat peta. Kelas HashMap memanjangkan kelas AbstractMap untuk menggunakan jadual hash untuk menyimpan unsur-unsur dalam peta. Kelas LinkedHashMap mengekalkan entri dalam peta berdasarkan pesanan kemasukan mereka. Ciri yang membezakan HashMap dan LinkedHashMap antara satu sama lain adalah bahawa Hashmap tidak mengekalkan urutan entri tersimpan dalam peta. Sebaliknya, LinkedHashMap menggunakan struktur data hibrid untuk mengekalkan urutan penyertaan di mana ia dimasukkan. Di dalam Carta Perbandingan di bawah, saya meneroka beberapa perbezaan lain antara HashMap dan LinkedHashMap yang hanya kelihatan.

Carta Perbandingan

Asas untuk PerbandinganHashMapLinkedHashMap
AsasPerintah memasukkan dalam HashMap tidak dipelihara.Perintah selipan dipelihara dalam LinkedHashMap.
Struktur DataHashMap menggunakan HashTable untuk menyimpan peta.LinkedHashMap menggunakan HashTable bersama dengan Senarai Berkaitan untuk menyimpan peta.
Memperluas / MelaksanakanHashMap meluaskan AbstrakMap dan melaksanakan antara muka Peta.LinkedHashMap meluaskan Hashmap.
VersiHashMap diperkenalkan di JDK 2.0.LinkedHashMap diperkenalkan di JDK 4.0.
OverheadKompatibel kurang overhead.Secara perbandingan lebih banyak kerana ia mesti mengekalkan urutan penyertaan peta.

Definisi HashMap

HashMap adalah kelas yang digunakan untuk membuat peta. Ia melaksanakan Interface Peta . Ia juga memanjangkan kelas AbstractMap supaya ia boleh menggunakan jadual hash untuk menyimpan entri dalam peta. Penyertaan peta adalah sepasang di mana setiap kunci dikaitkan dengan nilai. Kunci dalam entri digunakan untuk mendapatkan nilai kerana itu, kunci mestilah unik. Itulah sebabnya kekunci pendua tidak dibenarkan dalam HashMap. Tetapi kunci dalam setiap entri peta mungkin mempunyai jenis yang berbeza iaitu kunci dalam peta yang dibuat oleh HashMap boleh menjadi heterogen. Struktur data yang digunakan oleh HashMap untuk menyimpan peta adalah jadual hash.

Urutan pemasukan entri dalam HashMap tidak dipelihara. Kemasukan entri dalam peta yang dibuat menggunakan HashMap didasarkan pada kod hash yang dihitung oleh kunci dalam entri. Sekiranya anda salah memasukkan kunci pendua dalam HashMap, ia akan menggantikan nilai sebelumnya kunci itu dengan nilai baru yang dicadangkan dan akan mengembalikan nilai lama. Sekiranya tiada kunci pendua digunakan dan penggantian tidak berlaku, kunci sentiasa kembali Null. Marilah kita melihat cara menambah entri ke peta hash dengan contoh berikut.

 Hashmap hm = new Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.println (hm); / * output * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} 

Seperti dalam kod di atas, anda dapat melihat saya mencipta objek HashMap dan menambah entri menggunakan kaedah meletakkan dan apabila saya mencetak objek HashMap, penyertaan tidak dicetak dalam susunan yang dimasukkan. Oleh itu, anda tidak boleh berpura-pura susunan penyertaan dalam HashMap akan kembali. HashMap menggunakan semua kaedah antara muka Peta dan kelas AbstrakMap dan tidak memperkenalkan sebarang kaedah baru; ia mempunyai konstruktor sendiri. Kapasiti lalai peta hash ialah 16 dan nisbah isi lalai ialah 0.75 .

Definisi LinkedHashMap

LinkedHashMap juga merupakan kegunaan kelas untuk membuat peta. LinkedHashMap memanjangkan kelas HashMap dan diperkenalkan kemudian ke HashMap dalam versi JDK 4.0. Menjadi kelas kanak-kanak kelas HashMap LinkedHashMap sama persis dengan kelas HashMap termasuk konstruktor dan kaedah. Tetapi, LinkedHashMap berbeza dengan pengertian bahawa ia mengekalkan urutan penyisipan entri dalam peta. Struktur data yang digunakan oleh LinkedHashMap untuk menyimpan peta adalah senarai terkaitan dan jadual hash .

Di samping kaedah yang diwarisi oleh HashMap, LinkedHashMap memperkenalkan satu kaedah baru yang removeEldestEntry () . Kaedah ini digunakan untuk mengeluarkan entri tertua dalam peta. Kapasiti lalai dari LinkedHashMap adalah 16, dan nisbah isi lalai ialah 0.75 yang juga sama dengan kelas HashMap.

Perbezaan Utama Antara HashMap dan LinkedHashMap di Jawa

  1. Perbezaan yang paling penting adalah bahawa urutan pemetaan HashMap tidak dipelihara sedangkan perintah susunan LinkedHashMap dipelihara .
  2. Struktur data yang digunakan oleh HashMap untuk menyimpan unsur-unsur peta adalah Hashtable . Sebaliknya, struktur data yang digunakan oleh LinkedHashMap adalah senarai Terkait dan Hashtable .
  3. Kelas HashMap meluaskan kelas AbstrakMap dan mengimplementasikan antara muka Peta . Walau bagaimanapun, kelas LinkedHashMap adalah kelas kanak-kanak kelas HashMap iaitu kelas LinkedHashMap memanjangkan kelas HashMap.
  4. Kelas HashMap diperkenalkan dalam versi JDK 2.0 . Kelas LinkedHashMap diperkenalkan kemudian dalam versi JDK 4.0 .
  5. Kelas LinkedHashMap yang relatif lebih tinggi daripada HashMap kerana ia perlu mengekalkan susunan elemen yang dimasukkan dalam peta.

Kesimpulan:

LinkedHashMap hanya boleh digunakan di mana kita bimbang tentang urutan elemen yang dimasukkan dalam peta.

Top