Grafik perbandingan
Dasar untuk Perbandingan | HashMap | LinkedHashMap |
---|---|---|
Dasar | Urutan penyisipan di HashMap tidak dipertahankan. | Urutan penyisipan dipertahankan di LinkedHashMap. |
Struktur data | HashMap menggunakan HashTable untuk menyimpan peta. | LinkedHashMap menggunakan HashTable bersama dengan Linked List untuk menyimpan peta. |
Perpanjangan / Implements | HashMap memperluas AbstractMap dan mengimplementasikan antarmuka Peta. | LinkedHashMap memperluas Hashmap. |
Versi | HashMap diperkenalkan di JDK 2.0. | LinkedHashMap diperkenalkan di JDK 4.0. |
Atas | Biaya 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
- Perbedaan yang paling penting adalah bahwa urutan penyisipan HashMap tidak dipertahankan sedangkan, urutan penyisipan LinkedHashMap dipertahankan .
- 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 .
- Kelas HashMap memperluas kelas AbstractMap dan mengimplementasikan antarmuka Peta . Namun, kelas LinkedHashMap adalah kelas anak dari kelas HashMap yaitu kelas LinkedHashMap memperluas kelas HashMap.
- Kelas HashMap diperkenalkan dalam versi JDK 2.0 . Kelas LinkedHashMap diperkenalkan kemudian dalam versi JDK 4.0 .
- 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.