Perbandingan antara hashmap dan hashtable adalah pertanyaan umum dalam wawancara Java, yang digunakan untuk menguji apakah pemrogram dapat menggunakan kelas koleksi dengan benar dan apakah mereka dapat beradaptasi dengan berbagai ide untuk menyelesaikan masalah. Bagaimana cara kerja hashmap, perbandingan arraylist dengan vektor, dan pertanyaan ini adalah pertanyaan paling klasik tentang kerangka kerja koleksi java. Hashtable adalah kelas koleksi yang sudah ketinggalan zaman yang telah ada di Java API untuk waktu yang lama. Itu ditulis ulang di Java 4 dan mengimplementasikan antarmuka peta, jadi sejak itu menjadi bagian dari Kerangka Koleksi Java. Hashtable dan hashmap cukup mudah ditanyakan dalam wawancara Java, dan bahkan menjadi pertanyaan paling umum untuk diuji dalam wawancara kerangka kerja koleksi, jadi jangan lupa untuk menyiapkan pertanyaan ini sebelum berpartisipasi dalam wawancara Java.
Dalam artikel ini, kita tidak hanya akan melihat perbedaan antara hashmap dan hashtable, tetapi juga kesamaan di antara mereka.
Perbedaan antara hashmap dan hashtable
Baik hashmap dan hashtable mengimplementasikan antarmuka peta, tetapi sebelum memutuskan mana yang akan digunakan, Anda harus terlebih dahulu mencari tahu perbedaan di antara mereka. Perbedaan utama adalah: keamanan utas, sinkronisasi, dan kecepatan.
Beberapa istilah penting yang perlu diperhatikan:
1) Sychronized berarti bahwa hanya satu utas yang dapat mengubah hashtable sekaligus. Dengan kata lain, utas apa pun harus terlebih dahulu mendapatkan kunci sinkronisasi ketika ingin memperbarui hashtable. Utas lain harus menunggu sampai kunci sinkronisasi dilepaskan sebelum mereka dapat memperoleh kunci sinkronisasi dan memperbarui hashtable lagi.
2) Gagal-aman dan iterator iterator terkait. Jika objek koleksi membuat iterator atau listiterator, dan kemudian utas lain mencoba mengubah objek koleksi "secara struktural", pengecualian ConcurrentModificationException akan dilemparkan. Tetapi utas lain dapat mengubah objek pengumpulan melalui metode SET () diizinkan karena ini tidak mengubah koleksi "secara struktural". Namun, jika struktur telah diubah dan metode set () dipanggil, pengecualian IllegalargumentException akan dilemparkan.
3) Perubahan struktural merujuk pada menghapus atau memasukkan elemen, yang akan mempengaruhi struktur peta.
Bisakah kita membuat sinkronisasi hashmap?
HashMap dapat disinkronkan melalui pernyataan berikut:
Peta m = collections.synchronizemap (hashmap);
sebagai kesimpulan
Ada beberapa perbedaan utama antara hashtable dan hashmap: keamanan utas dan kecepatan. Gunakan HashTable hanya saat Anda memerlukan keamanan utas lengkap, dan jika Anda menggunakan Java 5 atau lebih, silakan gunakan ConcurrenthashMap.
Tautan Asli: Terjemahan Javarevisited: ImportNew.com - Tang Xiaoouan Tautan Terjemahan: http://www.importnew.com/7010.html