Direkomendasikan, 2024

Pilihan Editor

Perbedaan Antara HashMap dan LinkedHashMap di Jawa

HashMap dan LinkedHashMap adalah kelas-kelasnya, sangat mirip satu sama lain dan digunakan untuk membuat peta. Kelas HashMap memperluas kelas AbstractMap untuk menggunakan tabel hash untuk menyimpan elemen dalam peta. Kelas LinkedHashMap memelihara entri dalam peta berdasarkan urutan penyisipannya. Fitur yang membedakan HashMap dan LinkedHashMap dari satu sama lain adalah bahwa Hashmap tidak mempertahankan urutan entri yang tersimpan di peta. Di sisi lain, LinkedHashMap menggunakan struktur data hybrid untuk mempertahankan urutan entri yang dimasukkan. Dalam Bagan Perbandingan di bawah ini saya menjelajahi beberapa perbedaan lain antara HashMap dan LinkedHashMap hanya dengan melihat-lihat.

Grafik perbandingan

Dasar untuk PerbandinganHashMapLinkedHashMap
DasarUrutan penyisipan di HashMap tidak dipertahankan.Urutan penyisipan dipertahankan di LinkedHashMap.
Struktur dataHashMap menggunakan HashTable untuk menyimpan peta.LinkedHashMap menggunakan HashTable bersama dengan Linked List untuk menyimpan peta.
Perpanjangan / ImplementsHashMap memperluas AbstractMap dan mengimplementasikan antarmuka Peta.LinkedHashMap memperluas Hashmap.
VersiHashMap diperkenalkan di JDK 2.0.LinkedHashMap diperkenalkan di JDK 4.0.
AtasBiaya overhead yang relatif lebih sedikit.Secara relatif lebih banyak overhead karena harus menjaga urutan entri peta.

Definisi HashMap

HashMap adalah kelas yang digunakan untuk membuat peta. Ini mengimplementasikan Antarmuka Peta . Itu juga memperluas kelas AbstractMap sehingga bisa menggunakan tabel hash untuk menyimpan entri di peta. Entri peta adalah pasangan di mana setiap kunci dikaitkan dengan nilai. Kunci dalam entri digunakan untuk mengambil nilai karenanya, kuncinya harus unik. Itu sebabnya kunci duplikat tidak diizinkan di HashMap. Tetapi kunci di setiap entri peta mungkin memiliki tipe yang berbeda yaitu kunci di peta yang dibuat oleh HashMap bisa heterogen. Struktur data yang digunakan oleh HashMap untuk menyimpan peta adalah tabel hash.

Urutan penyisipan entri dalam HashMap tidak dipertahankan. Penyisipan entri dalam peta yang dibuat menggunakan HashMap didasarkan pada kode hash yang dihitung oleh kunci dalam entri. Jika secara tidak sengaja Anda memasukkan kunci duplikat di HashMap, itu akan menggantikan nilai kunci sebelumnya dengan nilai baru yang diusulkan dan akan mengembalikan nilai lama. Jika tidak ada kunci duplikat yang digunakan dan tidak ada penggantian yang terjadi, kunci selalu mengembalikan Null. Mari kita lihat bagaimana cara menambahkan 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 kode di atas, Anda dapat melihat saya membuat objek HashMap dan menambahkan entri menggunakan metode put dan ketika saya mencetak objek HashMap, entri tidak dicetak dalam urutan dimasukkan. Karenanya, Anda tidak bisa berpura-pura urutan entri di HashMap akan kembali. HashMap menggunakan semua metode antarmuka Peta dan kelas AbstractMap dan tidak memperkenalkan metode baru apa pun; ia memiliki konstruktor sendiri. Kapasitas default dari peta hash adalah 16 dan rasio pengisian default adalah 0.75 .

Definisi LinkedHashMap

LinkedHashMap juga merupakan penggunaan kelas untuk membuat peta. LinkedHashMap memperluas kelas HashMap dan diperkenalkan kemudian ke HashMap di JDK versi 4.0. Menjadi kelas anak dari kelas HashMap LinkedHashMap persis sama dengan kelas HashMap termasuk konstruktor dan metode. Namun, LinkedHashMap berbeda dalam arti bahwa ia mempertahankan urutan penyisipan entri di peta. Struktur data yang digunakan oleh LinkedHashMap untuk menyimpan peta adalah daftar tertaut dan tabel hash .

Selain metode yang diwarisi oleh HashMap, LinkedHashMap memperkenalkan satu metode baru yaitu removeEldestEntry () . Metode ini digunakan untuk menghapus entri tertua di peta. Kapasitas default LinkedHashMap adalah 16, dan rasio pengisian default adalah 0, 75 yang juga mirip dengan kelas HashMap.

Perbedaan Kunci Antara HashMap dan LinkedHashMap di Jawa

  1. Perbedaan yang paling penting adalah bahwa urutan penyisipan HashMap tidak dipertahankan sedangkan, urutan penyisipan LinkedHashMap dipertahankan .
  2. Struktur data yang digunakan oleh HashMap untuk menyimpan elemen-elemen peta adalah Hashtable . Di sisi lain, struktur data yang digunakan oleh LinkedHashMap adalah Linked list dan Hashtable .
  3. Kelas HashMap memperluas kelas AbstractMap dan mengimplementasikan antarmuka Peta . Namun, kelas LinkedHashMap adalah kelas anak dari kelas HashMap yaitu kelas LinkedHashMap memperluas kelas HashMap.
  4. Kelas HashMap diperkenalkan dalam versi JDK 2.0 . Kelas LinkedHashMap diperkenalkan kemudian dalam versi JDK 4.0 .
  5. Kelas LinkedHashMap yang komparatif memiliki lebih banyak overhead daripada HashMap karena harus mempertahankan urutan elemen yang dimasukkan dalam peta.

Kesimpulan:

LinkedHashMap hanya boleh digunakan jika kami khawatir tentang urutan elemen yang dimasukkan dalam peta.

Top