Perbedaan Antara Kamus dan Hashtable

Kamus vs Hashtable

Kamus diketik (jadi valuetypes tidak perlu basa), Hashtable tidak (jadi valuetype perlu basa). Hashtable memiliki cara yang lebih baik dari mendapatkan nilai daripada kamus IMHО, karena selalu tahu nilainya adalah sebuah objek. Jika Anda menggunakan .NET 3.5, mudah untuk menulis kamus yang panjang untuk kamus untuk mendapatkan perilaku yang serupa.

Kelas Hashtable adalah tipe khusus dari kelas kamus yang menggunakan nilai integer (disebut hash) untuk membantu dalam penyimpanan kunci-kuncinya. Kelas Hashtable menggunakan hash untuk mempercepat pencarian untuk kunci tertentu di cоllectiоn. Setiap objek di .NET berasal dari kelas Оbject. Kelas ini mendukung metode GetHash, yang mengembalikan integer yang secara unik mengidentifikasi objek. Kelas Hashtable adalah konsep yang sangat efisien secara umum. Satu-satunya masalah dengan kelas Hashtable adalah bahwa ia membutuhkan sedikit dari kepala, dan untuk beberapa konsep kecil (kurang dari sepuluh elemen) yang ujungnya dapat menghambat kinerja.

Ada satu perbedaan yang lebih penting antara HashTable dan Kamus. Jika Anda menggunakan pengindeks untuk mendapatkan nilai tetapi dari HashTable, HashTable akan berhasil mengembalikan nol untuk item yang tidak ada, sedangkan Kamus akan menunjukkan kesalahan jika Anda mencoba mengakses item menggunakan pengindeks yang tidak ada dalam Kamus..

HashTable adalah kelas dasar yang diketik dengan lemah; kelas abstrak DictionaryBase diketik dan menggunakan secara internal sebuah HashTable.

Suatu hal yang aneh diperhatikan di dalam Kamus adalah, ketika kita menambahkan banyak entri dalam Kamus, pengolah yang menambahkan entri dipertahankan. Dengan demikian, jika Anda menerapkan jangkauan pada Kamus, Anda akan mendapatkan recommr yang sama dengan yang Anda masukkan. Padahal, ini tidak benar dengan HashTable nonrmal, ketika Anda menambahkan sumber yang sama di Hashtable maka file tersebut tidak dipelihara. Jika 'Kamus didasarkan pada Hashtable' benar, mengapa Kamus mempertahankan lebih keras tetapi HashTable tidak melakukannya?

Seperti mengapa mereka berperilaku berbeda, itu karena Kamus Umum mengimplementasikan hashtable, tetapi tidak didasarkan pada System.Cоllectiоns.Hashtable. Implementasi Kamus Generik didasarkan pada semua pasangan nilai kunci dari daftar. Ini kemudian diindeks dengan ember hashtable untuk akses acak, tetapi ketika mengembalikan enumerat, itu hanya berjalan daftar dalam urutan berurutan - yang akan menjadi lebih cepat dari insertiоn seperti pada saat entri tidak digunakan kembali.