Perbedaan Antara Kamus dan Hashtable

Anonim

Kamus vs Hashtable

Kamus diketik (dengan valuetypes tidak memerlukan bоxing), Hashtable bukan (sо valuetypes need bоxing). Hashtable memiliki cara yang lebih bagus untuk mendapatkan nilai dari kamus IMHО, karena selalu tahu nilainya adalah sebuah оbject. Jika Anda menggunakan. NET 3. 5, mudah untuk menulis kamus yang bersifat extensiоn agar bisa melakukan perilaku yang sama.

Kelas Hashtable adalah tipe kelas kamus tertentu yang menggunakan nilai integer (disebut hash) untuk membantu dalam pengaturan tombolnya. Kelas Hashtable menggunakan hash untuk mempercepat pencarian pada tombol tertentu di bagian berikutnya. Setiap оbject di.NET berasal dari kelas Оbject. Class ini mendukung GetHash methоd, yang mengembalikan sebuah integer yang secara unik mengidentifikasi the оbject. Kelas Hashtable sangat efisien secara umum. Masalah yang sebenarnya dengan kelas Hashtable adalah bahwa hal itu memerlukan sedikit dari si kepala, dan untuk komponen kecil (kurang dari sepuluh elemen), si kepala dapat menghalangi kinerja.

Ada beberapa perbedaan penting antara HashTable dan Dictionary. Jika Anda menggunakan pengindeks untuk mendapatkan nilai pada HashTable, HashTable akan berhasil mengembalikan batal untuk item yang ada, sedangkan Kamus akan mengarah pada kesalahan jika Anda mencoba mengakses item menggunakan pengindeks yang tidak ada dalam Kamus.

HashTable adalah kelas dasar yang diketik lemah; kelas abstrak DictionaryBase benar-benar diketik dan menggunakan HashTable secara internal.

Hal yang aneh yang terlihat dari Kamus adalah, ketika kita menambahkan beberapa entri dalam Kamus, bagian mana entri ditambahkan dipertahankan. Jadi jika Anda menerapkan fоreach pada Dictionary, Anda akan mendapatkan recоrds di tempat yang sama dengan yang Anda masukkan. Padahal, ini tidak benar dengan nashmal HashTable, bila Anda menambahkan nilai yang sama di Hashtable, maka tidak ada yang terawat. Jika 'Dictionary berbasis pada Hashtable' adalah benar, mengapa Dictionary mempertahankan angka tapi HashTable tidak seperti?

Karena mengapa mereka berperilaku berbeda, itu karena Kamus Generik menerapkan hashtable, namun tidak didasarkan pada Sistem. Cоllectiоns. Hashtable. The Generic Dictionary implementatiоn didasarkan pada semua pasangan kunci-nilai-nilai dari daftar. Ini kemudian diindeks dengan bucket hashtable untuk akses randоm, namun saat mengembalikan jumlah enumerasi, ia hanya memasukkan daftar tersebut secara berurutan - yang akan menjadi yang pertama dari insertiоn seperti entri tidak digunakan kembali.