Perbezaan Antara Kamus dan Kamus Hashtable

Anonim

Kamus vs Hashtable

Dictionary ditaip (so valuetypes tidak perlu bóxing), Hashtable tidak (s nilai-nilai yang diperlukan perlu dilakukan). Hashtable mempunyai cara yang lebih baik untuk mendapatkan nilai berbanding dengan IMHO kamus, kerana ia selalu menyedari nilainya adalah satu objek. Though if yоu're using. BERSIH 3. 5, mudah untuk menulis kamus extensiоn mоd fоr untuk mendapatkan tingkah laku yang sama.

Kelas Hashtable adalah jenis kamus jenis tertentu yang menggunakan nilai integer (dipanggil hash) untuk membantu dalam storage kuncinya. Kelas Hashtable menggunakan hash untuk mempercepatkan carian untuk kunci tertentu di dalamnya. Setiap objek dalam.NET diperolehi daripada kelas Object. Kelas ini menggalakkan GetHash method, yang mengembalikan integer yang secara unik mengenal pasti objek tersebut. Kelas Hashtable adalah clollectión yang sangat berkesan secara umum. Isu yang betul dengan kelas Hashtable ialah ia memerlukan sedikit ketinggian, dan sedikit demi sedikit (kurang dari sepuluh elemen) yang dapat menghalang kecemerlangan.

Terdapat perbezaan yang lebih besar antara HashTable dan Kamus. Sekiranya anda menggunakan pengindeksan untuk mendapatkan nilai dari HashTable, HashTable akan berjaya mengembalikan nol untuk item yang tidak ada, sedangkan Kamus akan mengalihkan kesalahan jika anda cuba mengakses item menggunakan pengindeks yang tidak ada dalam Kamus.

HashTable adalah kelas asas yang ditaip lemah; kelas abstrak DictionaryBase diketik dengan betul dan menggunakan HashTable secara dalaman.

Satu perkara yang pelik yang diperhatikan adalah Kamus abuut, apabila kita menambahkan banyak entri dalam Kamus, pengepala di mana penyertaan ditambahkan dikekalkan. Oleh itu, jika anda menggunakan kamus dalam kamus, anda akan memperoleh rekod-rekod yang sama dengan anda yang telah memasukkannya. Sedangkan, ini tidak benar dengan HashTable biasa, apabila anda menambah rekod yang sama dalam Hashtable yang tidak dikekalkan. Jika 'Kamus berasaskan Hashtable' adalah benar, mengapa Kamus mengekalkan kata laluan tetapi HashTable tidak begitu?

Seperti mengapa mereka bertindak berbeza, itu kerana Kamus Umum menerapkan hashtable, tetapi tidak berdasarkan Sistem. Clollectiоns. Hashtable. The Generic Dictionary implementatiоn didasarkan pada all-key-value pairs dari senarai. Ini kemudiannya diindeks dengan keranjang hashtable untuk akses, tetapi apabila ia mengembalikan enumerat, ia hanya berjalan dalam senarai dalam urutan yang berurutan - yang akan menjadi kata laluan sebagai entri yang tidak digunakan lagi.