Perbedaan antara hashmap dan hashtable sering ditanyakan oleh orang lain. Saya akan meringkasnya di sini hari ini.
(I) Sejarah warisan berbeda
Hashtable kelas publik memperluas kamus mengimplementasikan kelas mappublic hashmap memperluas abstractmap mengimplementasikan peta
Hashtable diwarisi dari kelas kamus, dan hashmap adalah implementasi antarmuka peta yang diperkenalkan oleh Java 1.2.
(Ii) keamanan yang berbeda
HashMap tidak disinkronkan, dan hashtable disinkronkan secara default, yang berarti bahwa hashtable aman-utas dan banyak utas dapat berbagi hashtable; Dan jika tidak ada sinkronisasi yang benar, banyak utas tidak dapat berbagi hashmap. Java 5 kemudian memberikan concurrenthashmap, yang merupakan pengganti untuk hashtable dan memiliki skalabilitas yang lebih baik daripada hashtable. Tentu saja, kita dapat menyinkronkan hashmap dengan:
Peta m = collections.synchronizemap (hashmap);
(Iii) adalah sama atau serupa dalam nilai nol
HashMap memungkinkan Anda untuk menggunakan nilai nol sebagai kunci atau nilai untuk entri tabel. Hanya ada satu catatan dalam hashmap yang bisa menjadi kunci kosong, tetapi sejumlah entri bisa menjadi nilai kosong. Dengan kata lain, jika tidak ada kunci pencarian yang ditemukan dalam tabel, atau jika kunci pencarian ditemukan, tetapi itu adalah nilai kosong, maka dapatkan () akan mengembalikan nol; Meskipun Hashtable tidak berfungsi, baik kunci maupun nilai tidak memungkinkan nilai nol.
(Iv) Implementasi internal dari dua metode traversal berbeda
Hashtable dan hashmap keduanya menggunakan iterator iterator. Iterator hashmap adalah iterator yang gagal-gagal, sedangkan pencacah hashtable iterator tidak gagal. Karena alasan historis, Hashtable juga menggunakan metode enumerasi.
(V) berbagai penggunaan nilai hash
Hashtable secara langsung menggunakan kode hash dari objek, sedangkan hashmap perlu menghitung ulang nilai hash.
(Vi) Ukuran awal dan metode ekspansi array metode implementasi internal berbeda.
Ukuran default hash array di hashtable adalah 11, dan metode peningkatan sudah tua*2+1; Ukuran default hash array dalam hashmap adalah 16, dan itu harus menjadi eksponen 2.
Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!