Perbedaan Antara HashMap dan LinkedHashMap

HashMap dan LinkedHashMap adalah dua implementasi Peta yang paling umum dan bertujuan umum di platform Java. Mereka pada dasarnya adalah kelas berbasis hash, sangat mirip satu sama lain dan digunakan untuk membuat Peta. Antarmuka peta adalah yang terakhir dari antarmuka Kerangka Kerja Koleksi utama yang mendefinisikan operasi yang didukung oleh seperangkat asosiasi key-to-value di mana kunci tersebut unik. Implementasi Peta ini didasarkan pada algoritma hashing. Sementara kelas HashMap mengimplementasikan peta tidak berurutan, kelas LinkedHashMap mengimplementasikan peta yang dipesan. Implementasi LinkedHashMap adalah subkelas dari kelas HashMap yang berarti mewarisi fitur-fitur kelas HashMap. Tidak ada banyak perbedaan antara keduanya dalam hal kinerja. Mari lihat.

Apa itu HashMap? 

HashMap adalah salah satu yang paling umum dan di antara empat implementasi tujuan umum dari antarmuka Peta di Jawa berdasarkan algoritma hashing. Ini analog dengan HashSet kelas set, meskipun, unsur-unsurnya unordered di kedua kelas. Ini diimplementasikan sebagai tabel hash tetapi tidak seperti LinkedHashMap, itu tidak mempertahankan urutan pada kunci atau nilai. Secara umum, HashMap memberikan kinerja waktu-konstan untuk put and get. Kelas ini bukan thread-safe tetapi memungkinkan satu kunci nol dan beberapa nilai nol. Karena tidak mempertahankan urutan iterasi, itu membutuhkan lebih sedikit memori.

Apa itu LinkedHashMap?

LinkedHashMap adalah salah satu dari empat implementasi tujuan umum dari antarmuka Peta yang merupakan subkelas dari kelas HashMap yang berarti ia mewarisi fitur-fiturnya. Meskipun sangat mirip dengan HashMap dalam hal kinerja, kecuali itu mempertahankan urutan penyisipan kunci, baik dalam urutan di mana kunci dimasukkan ke dalam Peta atau urutan di mana entri diakses di Peta. Itu memperbaiki kontrak kelas induknya dengan menjamin urutan iterator mengembalikan elemen-elemennya. Namun, ini membutuhkan lebih banyak memori daripada HashMap karena ia mempertahankan daftar yang ditautkan ganda di Jawa.

Perbedaan antara HashMap dan LinkedHashMap

  1. Dasar-dasar HashMap Vs. LinkedHashMap

HashMap adalah implementasi berbasis antarmuka Peta di Jawa. Peta adalah kumpulan pasangan nilai kunci dan digunakan saat Daftar berada dalam koleksi yang dipesan. HashMap adalah kelas Koleksi yang menyimpan nilai dalam pasangan nilai kunci. Dalam istilah sederhana, ini memetakan kunci ke nilai yang berarti dapat menemukan nilai berdasarkan kunci. LinkedHashMap adalah implementasi daftar tertaut dari antarmuka Peta seperti halnya HashMap kecuali ia mempertahankan pesanan elemen yang dimasukkan ke dalamnya. Ini adalah subclass dari HashMap yang mewarisi fitur-fiturnya. LinkedHashMap memperbaiki kontrak kelas induknya, HashMap, dengan menjamin urutan iterator mengembalikan elemen-elemennya.

  1. Urutan Iterasi

Perbedaan utama antara HashMap dan LinkedHashMap adalah pesanan. Elemen-elemen dari HashMap tidak berurutan, benar-benar acak, sedangkan elemen-elemen dari LinkedHashMap dipesan. Entri dari LinkedHashMap berada dalam urutan penyisipan kunci, yang merupakan urutan di mana kunci dimasukkan dalam Peta. Ini berarti kunci pertama yang dimasukkan ke dalam Peta dihitung terlebih dahulu, demikian juga nilai yang terkait dengannya, dan entri terakhir yang dimasukkan dalam penghitungan terakhir. LinkedHashMap memiliki urutan iterasi yang dapat diprediksi yang berarti juga dapat mempertahankan elemen-elemennya dalam urutan akses, yang merupakan urutan di mana entri diakses.

  1. Penerapan

Baik kelas HashMap dan LinkedHashMap menggunakan hashing untuk mengimplementasikan antarmuka Peta di Jawa kecuali HashMap diimplementasikan sebagai tabel hash sedangkan LinkedHashMap menyimpan daftar Bucket ganda yang terhubung yang menjalankan semua entrinya. Inilah sebabnya mengapa LinkedHashMap membutuhkan lebih banyak memori daripada HashMap karena tidak seperti HashMap, ia mempertahankan pesanan. Ini menghapus pemesanan kacau oleh HashMap, tanpa menimbulkan biaya tambahan yang akan dikeluarkan jika tidak dengan TreeMap. Selain itu, kelas LinkedHashMap sangat mirip dengan kelas HashMap dalam banyak aspek seperti sinkronisasi dan kunci null / nilai karena keduanya memungkinkan satu kunci nol dan beberapa nilai nol.

  1. Kinerja untuk HashMap Vs. LinkedHashMap

Meskipun, kedua kelas memberikan kinerja yang sebanding, kelas HashMap diyakini menjadi pilihan yang lebih disukai jika pemesanan bukan merupakan masalah karena tidak menjamin urutan pengulangan dari Peta. Operasi seperti menambah, menghapus, atau menemukan entri berdasarkan kunci adalah waktu yang konstan, karena mereka hash kunci. Jadi menambahkan, menghapus, dan menemukan entri di LinkedHashMap bisa sedikit lebih lambat daripada di HashMap karena mempertahankan daftar Bucket yang terhubung dua kali lipat di Jawa. Selain itu, HashMap membutuhkan lebih sedikit memori daripada LinkedHashMap karena tidak ada pesanan yang dipertahankan.

HashMap vs. LinkedHashMap: Chart Perbandingan

Ringkasan HashMap Vs. LinkedHashMap

Sementara kelas HashMap dan HashMap hampir serupa dalam kinerja, HashMap membutuhkan lebih sedikit memori daripada LinkedHashMap karena tidak menjamin urutan iterasi peta, yang membuat menambah, menghapus, dan menemukan entri dalam HashMap relatif lebih cepat daripada melakukan hal yang sama dengan LinkedHashMap. Namun, perbedaan utama antara keduanya adalah urutan: elemen-elemen dari HashMap tidak berurutan, sedangkan elemen-elemen dari LinkedHashMap berada dalam urutan penyisipan kunci secara default artinya urutan di mana kunci dimasukkan ke dalam peta. LinkedHashMap juga dapat mempertahankan elemen-elemennya dalam urutan akses yang berarti urutan di mana entri diakses. Seperti halnya LinkedHashMap, daftar yang ditautkan dua kali lipat harus dipertahankan, ia memiliki kinerja yang lebih rendah daripada HashMap.