Perbedaan antara hashmap dan hashset
- 3018
- 342
- Richard Hegmann MD
Saat Anda mempelajari bahasa komputer baru, salah satu hal pertama yang cenderung Anda tanyakan adalah bagaimana bekerja dengan kelompok data yang besar. Topik ini sering dibahas dalam topik "Struktur Data". Jika Anda menggali lebih dalam, Anda harus menyampaikan topik -topik seperti daftar tertaut, antrian, tumpukan, dan pohon biner di antara banyak struktur data lainnya. Di Java, struktur ini adalah bagian dari Kerangka Koleksi Java. Koleksi tidak lain adalah jenis struktur data yang mengacu pada pengelompokan beberapa elemen data dan kerangka kerja koleksi java menstandarkan cara di mana kelompok objek ini ditangani. Faktanya, kerangka kerja koleksi dirancang untuk memenuhi beberapa tujuan.
Seluruh kerangka kerja koleksi dirancang di sekitar satu set antarmuka standar. Beberapa implementasi standar seperti LinkedList, HashSet, dan TreeSet disediakan oleh antarmuka ini yang mungkin Anda lakukan. Selain itu, Anda juga dapat mengimplementasikan koleksi Anda sendiri jika Anda memilih. Namun, selain koleksi, kerangka kerja mendefinisikan beberapa antarmuka dan kelas peta. Java berisi tiga implementasi peta tujuan umum - hashmap, treemap dan linkedhashmap - yang menyimpan kunci/nilai nilai. Meskipun peta bukan koleksi secara teknis, mereka sepenuhnya terintegrasi dengan koleksi. Faktanya, peta fokus pada kelompok hubungan antara objek. Artikel ini merangkum perbedaan utama antara hashmap dan hashset.
Apa itu hashmap?
HashMap adalah implementasi antarmuka peta yang paling umum digunakan yang menyediakan peta kunci/nilai dasar di mana elemen tidak berurutan. Itu menggunakan nilai khusus yang disebut kode hash, bukan pencarian kunci yang lambat. Kode hash adalah cara untuk mengambil informasi dalam objek yang dimaksud dan mengubahnya menjadi int "relatif unik" untuk objek itu. Ini hanya bekerja pada prinsip hashing yang berarti menggunakan fungsi hash untuk memetakan nilai pengidentifikasi. Sama seperti vektor dan stack memiliki penggantian mereka di arraylist dan linkedlist, hashtable memiliki penggantian hashmap. Itu memperluas AbstractMap untuk mengimplementasikan antarmuka peta menggunakan representasi hashtable internal. Dan mirip dengan implementasi tujuan umum lainnya, HashMap mendukung metode opsional MAP, memungkinkan nilai nol, dan tidak disinkronkan.
Apa itu hashset?
Hashset adalah salah satu anggota kerangka kerja koleksi java yang mengimplementasikan antarmuka yang ditetapkan, didukung oleh tabel hash yang sebenarnya merupakan instance hashmap. Seperti namanya, itu diimplementasikan oleh tabel hash, sebuah array di mana elemen disimpan pada posisi yang berasal dari isinya. Tidak seperti peta, Set adalah koleksi yang persis dengan antarmuka yang persis sama, jadi tidak ada fungsi tambahan seperti yang ada dengan dua daftar yang berbeda. Hashset menggunakan fungsi hashing yang dirancang khusus untuk pencarian cepat. Ini adalah kumpulan objek unik yang tidak teratur yang tidak dapat menyimpan nilai duplikat. HashSet memperluas kelas Abstractset yang mengimplementasikan set antarmuka. Namun, hashset tidak mendefinisikan metode tambahan selain yang disediakan oleh superclasses dan antarmuka.
Perbedaan antara hashmap dan hashset
-
Dasar
HashMap adalah implementasi antarmuka peta yang paling umum digunakan yang menyediakan peta kunci/nilai dasar di mana elemen tidak berurutan. Ini hanya bekerja pada prinsip hashing yang berarti menggunakan fungsi hash untuk memetakan nilai pengidentifikasi. Hashset, di sisi lain, adalah salah satu anggota Kerangka Koleksi Java yang mengimplementasikan antarmuka yang ditetapkan, didukung oleh tabel hash yang sebenarnya merupakan instance hashmap. Sederhananya, hashmap mengimplementasikan antarmuka peta, sedangkan hashset mengimplementasikan antarmuka yang ditetapkan.
-
Kegunaan
Hashset membuat koleksi yang menggunakan tabel hash untuk penyimpanan. Tabel hash menyimpan informasi menggunakan metode yang disebut hashing. Hashset menggunakan fungsi hashing, yang secara khusus dirancang untuk pencarian cepat, untuk menyimpan elemen atau nilai. Sebagian besar fungsi hashset disediakan melalui AbstractCollection dan Abstractset Superclass, yang dibagikan Hashset dengan TreeSet. Hashmap memperluas abstractmap untuk mengimplementasikan antarmuka peta menggunakan representasi hashtable internal. Kedua kelas tidak disinkronkan yang berarti mereka tidak cocok untuk operasi yang aman.
-
Nilai duplikat
Karena peta tidak mendukung kunci duplikat, hashmap tidak mengizinkan kunci duplikat tetapi diizinkan untuk memiliki nilai duplikat. Ini berarti nilai duplikat dapat ada di hashmap tetapi Anda dapat menggunakan koleksi sebagai nilai terhadap beberapa kunci. Setiap kunci harus unik dalam hashmap dan satu kunci tidak dapat diizinkan memiliki lebih dari 1 nilai. Hashset, di sisi lain, tidak dapat memiliki elemen duplikat hanya dengan definisi satu set, yang berarti Anda tidak dapat menyimpan nilai duplikat di hashset. Hashmap hanya memungkinkan satu kunci nol tetapi memungkinkan sejumlah nilai nol, sedangkan hashset hanya memungkinkan satu nilai nol.
-
Mekanisme penyimpanan
Hashmap bekerja pada prinsip hashing yang berarti menggunakan fungsi hash untuk memetakan nilai mengidentifikasi secara internal menggunakan algoritma hashing untuk memungkinkan pengambilan yang mudah. Mekanisme hashing sejati selalu mengembalikan kode hash yang sama () saat diterapkan pada objek yang sama. Hashset, di sisi lain, secara internal menggunakan hashmap sebagai struktur data dukungan untuk menambah atau menyimpan objek. Ini berarti ketika objek hashset dibuat, itu akan membuat objek hashmap.
Hashmap vs. Hashset: Bagan Perbandingan
Ringkasan hashmap vs. Hashset
Meskipun HashMap dan Hashset tidak disinkronkan yang berarti mereka tidak cocok untuk operasi yang aman dan sama sekali dan mereka adalah konstruksi yang sama sekali berbeda, mereka memberikan kinerja waktu yang konstan untuk operasi dasar seperti menambahkan, menghapus elemen dll. Sementara HashMap adalah implementasi tujuan umum dari antarmuka peta yang menyimpan pasangan kunci/nilai, hashset adalah implementasi dari antarmuka yang ditetapkan. Hashset memang menggunakan hashmap untuk mendukung implementasinya. Namun, hashmap menggunakan prinsip hashing dan menggunakannya untuk dengan cepat berburu kunci.