Perbezaan antara hashmap dan hashset
- 3742
- 1039
- Ricardo Koelpin IV
Apabila anda mempelajari bahasa komputer baru, salah satu perkara pertama yang anda cenderung untuk bertanya ialah bagaimana untuk bekerja dengan kumpulan data yang besar. Topik ini sering diliputi di bawah topik "Struktur Data". Sekiranya anda menggali lebih mendalam, anda mesti datang ke topik seperti senarai yang dipautkan, beratur, susunan, dan pokok binari di antara banyak struktur data lain. Di Jawa, struktur ini adalah sebahagian daripada kerangka koleksi Java. Koleksi tidak lain hanyalah sejenis struktur data yang merujuk kepada pengumpulan pelbagai elemen data dan rangka koleksi Java Standardkan cara di mana kumpulan objek ini dikendalikan. Malah, rangka kerja koleksi direka untuk memenuhi beberapa matlamat.
Rangka Kerja Koleksi Seluruh direka di sekitar satu set antara muka standard. Beberapa pelaksanaan standard seperti LinkedList, Hashset, dan TreeSet disediakan oleh antara muka ini yang anda mungkin-adalah. Di samping itu, anda juga boleh melaksanakan koleksi anda sendiri jika anda memilih. Walau bagaimanapun, sebagai tambahan kepada koleksi, rangka kerja ini mentakrifkan beberapa antara muka dan kelas peta. Java mengandungi tiga pelaksanaan peta tujuan umum - hashmap, treemap dan linkedhashmap - yang menyimpan pasangan kunci/nilai. Walaupun peta tidak koleksi secara teknikal, mereka disepadukan sepenuhnya dengan koleksi. Malah, peta memberi tumpuan kepada kumpulan hubungan antara objek. Artikel ini meringkaskan perbezaan utama antara hashmap dan hashset.
Apa itu hashmap?
HashMap adalah pelaksanaan antara muka peta yang paling biasa digunakan yang menyediakan peta kunci/nilai asas di mana unsur -unsur tidak teratur. Ia menggunakan nilai khas yang disebut kod hash, bukannya carian lambat dari kunci. Kod hash adalah cara untuk mengambil maklumat dalam objek yang dipersoalkan dan menjadikannya "relatif unik" int untuk objek itu. Ia hanya berfungsi pada prinsip hashing yang bermaksud ia menggunakan fungsi hash untuk memetakan nilai. Sama seperti vektor dan stack mempunyai penggantian mereka dalam arraylist dan linkedlist, hashtable mempunyai pengganti dalam hashmap. Ia meluaskan abstrak untuk melaksanakan antara muka peta menggunakan perwakilan hashtable dalaman. Dan serupa dengan pelaksanaan tujuan umum yang lain, hashmap menyokong kaedah pilihan peta, membolehkan nilai null, dan tidak disegerakkan.
Apa itu hashset?
Hashset adalah salah satu ahli kerangka koleksi Java yang melaksanakan antara muka yang ditetapkan, yang disokong oleh jadual hash yang sebenarnya merupakan contoh hashmap. Seperti namanya, ia dilaksanakan oleh jadual hash, array di mana unsur -unsur disimpan pada kedudukan yang diperoleh dari kandungannya. Tidak seperti peta, set betul -betul koleksi dengan antara muka yang sama, jadi tidak ada fungsi tambahan seperti yang ada dengan dua senarai yang berbeza. Hashset menggunakan fungsi hashing yang direka khusus untuk carian pesat. Ini adalah koleksi objek unik yang tidak dapat disusun yang tidak dapat menyimpan nilai pendua. Hashset memanjangkan kelas abstrak yang melaksanakan antara muka. Walau bagaimanapun, hashset tidak menentukan sebarang kaedah tambahan selain daripada yang disediakan oleh superclass dan antara muka.
Perbezaan antara hashmap dan hashset
-
Asas
HashMap adalah pelaksanaan antara muka peta yang paling biasa digunakan yang menyediakan peta kunci/nilai asas di mana unsur -unsur tidak teratur. Ia hanya berfungsi pada prinsip hashing yang bermaksud ia menggunakan fungsi hash untuk memetakan nilai. Hashset, sebaliknya, adalah salah satu ahli kerangka koleksi Java yang melaksanakan antara muka yang ditetapkan, yang disokong oleh jadual hash yang sebenarnya merupakan contoh hashmap. Cukup bercakap, hashmap melaksanakan antara muka peta, sedangkan hashset melaksanakan antara muka set.
-
Fungsi
Hashset mencipta koleksi yang menggunakan jadual hash untuk penyimpanan. Hash Table menyimpan maklumat menggunakan kaedah yang dipanggil hashing. Hashset menggunakan fungsi hashing, yang direka khusus untuk carian pesat, untuk menyimpan elemen atau nilai. Kebanyakan fungsi hashset disediakan melalui superclass abstrak dan abstrak, yang mempunyai saham hashset dengan Treeset. HashMap memanjangkan AbstrakMap untuk melaksanakan antara muka peta menggunakan perwakilan hashtable dalaman. Kedua-dua kelas tidak disegerakkan makna mereka tidak sesuai untuk operasi yang selamat.
-
Nilai pendua
Kerana peta tidak menyokong kekunci pendua, hashmap tidak membenarkan kekunci pendua tetapi dibenarkan mempunyai nilai pendua. Ini bermakna nilai pendua boleh wujud dalam hashmap tetapi anda boleh menggunakan pengumpulan sebagai nilai terhadap beberapa kunci. Setiap kunci mestilah unik dalam hashmap dan satu kunci tidak boleh dibenarkan mempunyai lebih daripada 1 nilai. Hashset, sebaliknya, tidak boleh mempunyai elemen pendua dengan definisi semata -mata set, yang bermaksud anda tidak dapat menyimpan nilai pendua dalam hashset. HashMap hanya membenarkan satu kunci null tetapi membolehkan sebilangan nilai null, sedangkan hashset hanya membenarkan satu nilai null.
-
Mekanisme penyimpanan
Hashmap berfungsi pada prinsip hashing yang bermaksud ia menggunakan fungsi hash untuk memetakan nilai -nilai yang secara dalaman menggunakan algoritma hashing untuk membolehkan pengambilan semula mudah. Mekanisme hashing yang benar selalu mengembalikan hashcode yang sama () apabila diterapkan pada objek yang sama. Hashset, sebaliknya, menggunakan hashmap secara dalaman sebagai struktur data sokongan untuk menambah atau menyimpan objek. Ini bermakna apabila objek hashset dicipta, ia akan mewujudkan objek hashmap.
HashMap vs. Hashset: Carta Perbandingan
Ringkasan hashmap vs. HASHSET
Walaupun kedua-dua hashmap dan hashset tidak disegerakkan makna mereka tidak sesuai untuk operasi yang selamat dan mereka adalah konstruk yang sama sekali berbeza, mereka menyediakan prestasi masa yang tetap untuk operasi asas seperti menambah, mengeluarkan elemen dan lain-lain. Walaupun HashMap adalah pelaksanaan tujuan umum antara muka peta yang menyimpan pasangan kunci/nilai, hashset adalah pelaksanaan antara muka yang ditetapkan. Hashset menggunakan hashmap untuk menyokong pelaksanaannya. Walau bagaimanapun, hashmap menggunakan prinsip hashing dan menggunakannya untuk memburu dengan cepat.