Perbedaan Antara HashMap dan HashTable di Java

Diterbitkan: 2021-06-02

Jika Anda belajar tentang Java dan aplikasinya, Anda pasti pernah menemukan HashMap dan HashTable. Keduanya adalah salah satu kelas terpenting dalam kerangka Java Collection. Anda akan menggunakannya secara ekstensif saat mengembangkan dengan Java, itulah mengapa sangat penting untuk memahami perbedaannya.

Dalam poin berikut, kami akan membahas topik HashTable vs HashMap secara mendetail dan menjelaskan perbedaan antara keduanya:

Daftar isi

Apa itu HashMap?

HashMap telah ada di koleksi Java sejak diperkenalkannya Java 1.2. Hal ini memungkinkan Anda untuk melakukan implementasi dasar dari antarmuka Peta Java. HashMap menyimpan data dalam pasangan (Kunci, Nilai), dan untuk mengaksesnya, Anda harus menggunakan indeks jenis lain, seperti bilangan bulat.

Di sini, Anda menggunakan satu objek sebagai kunci (indeks) untuk objek lain (nilai), maka penggunaan pasangan (kunci, nilai). Jika Anda menambahkan kunci duplikat, itu akan menggantikan elemen kunci yang sesuai.

Fitur HashMap

Untuk memahami perbedaan antara HashTable vs HashMap, pertama-tama, Anda harus memahami fitur-fiturnya. Itu akan membuat Anda terbiasa dengan dasar-dasar keduanya. HashMap memiliki beberapa fitur berikut:

  • Ini adalah bagian dari paket java.util.
  • Ini memperluas kelas abstrak AbstractMap yang menyediakan implementasi antarmuka Peta yang tidak lengkap.
  • Seiring dengan implementasi antarmuka Peta, ini juga mengimplementasikan antarmuka Serializable dan Cloneable.
  • Ini memungkinkan nilai duplikat tetapi tidak mengizinkan kunci duplikat. Ini berarti satu kunci tidak boleh memiliki lebih dari satu nilai, tetapi beberapa kunci dapat memiliki satu nilai.
  • Anda dapat menggunakan kunci nol hanya sekali dalam HashMap, tetapi Anda dapat menggunakan beberapa nilai nol.
  • Itu tidak membuat jaminan tentang urutan peta, terutama apakah urutannya akan tetap konstan dari waktu ke waktu. HashMap hampir mirip dengan HashTable tetapi tidak sinkron.
  • HashSet menggunakan HashMap secara internal.

Apa itu HashTable?

Anda menggunakan kelas HashTable untuk mengimplementasikan tabel hash yang memetakan kunci ke nilai. Di sini, Anda dapat menggunakan objek non-null sebagai kunci atau sebagai nilai. Ingatlah bahwa untuk menyimpan dan mengambil objek dari tabel hash dengan sukses, objek yang Anda gunakan sebagai kunci harus mengimplementasikan metode kode hash dan metode equals.

Hashtable menyimpan data dalam format array, dan setiap nilai data memiliki nilai indeks yang unik. Ini memungkinkan Anda untuk mengakses data tertentu dengan cukup cepat jika Anda mengetahui indeks yang diperlukan.

Fitur HashTable

HashTable memiliki fitur yang khas, seperti HashMap. Namun, fitur-fitur ini membuatnya unik dan berbeda dari HashMap dalam banyak hal:

  • HashTable sangat mirip dengan HashMap tetapi disinkronkan.
  • Ini menyimpan pasangan nilai kunci dalam tabel hash.
  • Di sini, Anda menentukan objek yang digunakan sebagai kunci dan nilai yang ingin Anda kaitkan dengan yang sama. Kemudian Anda meng-hash kunci dan menggunakan kode hash yang dihasilkan sebagai indeks tempat Anda menyimpan nilai di dalam tabel.
  • Kapasitas default kelas Hashtable adalah 11, dan faktor bebannya adalah 0,75.
  • HashMap tidak menawarkan Pencacahan, sedangkan Hashtable tidak menawarkan Pencacahan cepat.

Perbedaan Antara HashMap dan HashTable

Sekarang setelah Anda mengetahui sorotan khusus dari HashMap dan HashTable, sekarang kita akan membandingkannya dan melihat perbedaan mencolok di antara keduanya:

HashMap Tabel Hash
Ini tidak disinkronkan. Anda tidak dapat berbagi banyak utas di sini tanpa menggunakan kode sinkronisasi yang tepat karena tidak aman untuk utas. Ini disinkronkan. Anda dapat membagikannya dengan banyak utas karena aman untuk utas.
Itu mewarisi kelas AbstractMap. Itu mewarisi kelas Kamus.
Di sini, Iterator sangat cepat jatuh. Di HashTable, Enumerator tidak cepat jatuh.
Iterator melintasi HashMap. Enumerator dan Iterator melintasi HashTable.
Anda dapat membuat HashMap disinkronkan dengan memanggil kode
Peta m = Collections.synchronisedMap(hashMap);
Tabel Hash disinkronkan secara internal, dan Anda tidak dapat membatalkan sinkronisasi dengan kode apa pun.
Ini cukup cepat. Ini relatif lebih lambat dari HashMap.
HashMap adalah kelas baru dan baru-baru ini diperkenalkan di JDK 1.2. HashTable adalah kelas warisan.
Ini memungkinkan beberapa nilai nol dan satu kunci nol. Itu tidak mengizinkan nilai atau kunci nol apa pun.

Contoh Pengkodean

Berikut adalah contoh HashMap dan HashTable di tempat kerja sehingga Anda dapat memahami perbedaan HashMap vs HashTable.

Memasukkan:

impor java.util.*;

impor java.lang.*;

impor java.io.*;

JavaTester kelas publik{

public static void main(String args[]){

Tabel hash ht=tabel hash baru();

ht.put(1,"Uday");

ht.put(1,”Ujjwal”);

ht.put(2,"Sumit");

ht.put(3,"Vijay");

System.out.println(“————-Hash tabel————–“);

Set<Integer> keySet = ht.keySet();

for (Kunci bilangan bulat:keySet) {

System.out.println(kunci + ” “+ht.get(kunci));

}

HashMap hm=HashMap baru();

hm.put(0,”Usai”);

hm.put(4,"Uday"); // Anda dapat memiliki nilai duplikat dalam hashmap

hm.put(1,"Sumit");

hm.put(2,”Vijay”);

System.out.println(“———– Peta hash———–“);

Set<Integer> keySet1 = ht.keySet();

for (Kunci bilangan bulat:keySet) {

System.out.println(kunci + ” “+hm.get(kunci));

}

}

}

Keluaran:

Tabel hash:

3 Wijaya

2 Sumit

1 Ujjwal

Peta hash:

0 Uday

1 Sumit

2 Wijaya

4 Uday

Kapan menggunakan HashMap vs HashTable?

Faktor utama yang menentukan apakah Anda akan menggunakan HashMap atau HashTable adalah sinkronisasi. Jika Anda membutuhkan tugas thread-safe, maka Anda harus menggunakan HashTable karena semua metodenya disinkronkan. Namun, ini adalah kelas warisan, dan Anda harus menghindarinya.

Jika Anda memiliki lingkungan multithreaded, Anda harus menggunakan ConcurrentHashMap karena sangat mirip dengan HashTable. Ini memungkinkan Anda untuk membuat HashMap disinkronkan dengan benar.

Operasi yang disinkronkan menyebabkan kinerja yang buruk, jadi Anda harus menghindarinya dalam banyak kasus. Selain itu, HashMap cocok untuk lingkungan non-utas, sehingga Anda dapat menggunakannya dengan mudah.

Pelajari Kursus Perangkat Lunak online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Kesimpulan

HashMap dan HashTable adalah kode Java populer dengan fungsi serupa. Namun, seperti yang Anda lihat, ada beberapa perbedaan mencolok di antara keduanya. HashMap adalah kelas Java, sedangkan HashTable adalah struktur data.

Jika Anda tertarik untuk mempelajari lebih lanjut tentang Java dan bahasa pemrograman lainnya, kami sarankan untuk memeriksa Program PG Eksekutif kami dalam Pengembangan Perangkat Lunak dengan Spesialisasi dalam Pengembangan Full Stack .

Apa itu tabel hash?

Tabel hash merupakan sebuah wadah struktur data yang banyak digunakan dalam pemrograman komputer. Tabel hash digunakan untuk menampung pasangan nilai kunci, di mana kuncinya dapat berupa objek apa pun. Sebagai wadah, tabel hash harus mendukung operasi penyisipan dan penghapusan. Sebagai alat pencarian, tabel hash harus mendukung operasi get. Jika tabel hash seharusnya menjadi struktur data kamus, itu juga harus mendukung operasi berisi. Jadi, secara umum, tabel hash adalah struktur data yang banyak digunakan untuk mengimplementasikan operasi insert, remove, get, dan contain secara efektif. Tabel hash banyak digunakan karena kinerjanya yang cepat.

Apa itu kerangka kerja koleksi di Jawa?

Java Collections Framework adalah seperangkat antarmuka, kelas, dan algoritma untuk Platform Java. Ini telah menjadi bagian dari Platform Java sejak versi 1.2. Ini termasuk antarmuka untuk wadah, daftar, antrian dan sebagainya, tetapi juga termasuk kelas untuk menangani tanggal dan waktu, kelas untuk menangani ekspresi reguler, yang lain untuk menangani internasionalisasi, dan satu lagi untuk menangani pencarian melalui file.

Apa hubungan antara hashtable dan hashmap di Jawa?

Hashtable adalah struktur data khusus yang mengaitkan kunci dengan nilai. Kunci dapat berupa objek apa pun, tetapi semua kunci dalam tabel hash yang diberikan harus dapat dibandingkan satu sama lain (yaitu, menggunakan antarmuka yang sama atau kompatibel). Di Jawa, peta adalah jenis hashtable tertentu yang diimplementasikan menggunakan TreeMap. Kunci dalam peta harus menerapkan metode yang sama, dan peta menggunakan metode ini untuk menentukan apakah dua kunci sama atau tidak. Ini berarti bahwa hanya kunci yang disimpan di peta, dan nilai terkaitnya dihitung kapan pun dibutuhkan.