Perbezaan antara kamus dan hashtable

Perbezaan antara kamus dan hashtable

Kamus vs hashtable

Kamus ditaip (valuetypes tidak memerlukan bOxing), hashtable tidak (valuetypes memerlukan bOxing). Hashtable mempunyai cara yang lebih baik daripada nilai daripada kamus IMHO, kerana ia selalu kukuh nilai adalah оbject. Jika anda menggunakan .Bersih 3.5, mudah untuk menulis methan extensior untuk kamus untuk mendapatkan tingkah laku yang sama.

Kelas Hashtable adalah kelas kamus jenis tertentu yang menggunakan nilai integer (dipanggil hash) untuk membantu. Kelas hashtable menggunakan hash untuk mempercepat pencarian untuk kunci tertentu. Setiap оbject masuk .Bersih mendapat kelas оbject. Kelas ini menyentuh gethash meth, yang mengembalikan integer yang secara unik mengenal pasti. Kelas hashtable adalah COLLECTIO yang sangat efisien secara umum. Isu yang sama dengan kelas hashTable adalah bahawa ia memerlukan sedikit everhead, dan untuk kecil -kecil kecil (kurang daripada sepuluh elemen) yang boleh menghalang kesungguhan.

Ada perbezaan yang tidak jelas antara hashtable dan kamus. Sekiranya anda menggunakan pengindeks untuk mendapatkan nilai di hashtable, hashtable akan berjaya kembali ke batal untuk item yang tidak wujud, sedangkan kamus akan berlaku jika anda cuba mengakses item menggunakan pengindeksan yang tidak ada dalam keadaan di dalamnya.

Hashtable adalah kelas asas yang lemah ditaip; Kelas Abstrak Kamus Dikenali dan menggunakan Hashtable secara dalaman.

Satu perkara yang pelik melihat kamus abu adalah, apabila kita menambah pelbagai penyertaan dalam kamus, yang mana penyertaan ditambah dikekalkan. Oleh itu, jika anda memohon FOREACH di kamus, anda akan mendapat rekrut yang sama, anda telah memasukkannya. Sedangkan, ini tidak benar dengan hashtable normal, apabila anda menambah rekrut yang sama di hashtable, tidak ada yang dikekalkan. Sekiranya 'Kamus didasarkan pada Hashtable' adalah benar, mengapa kamus mengekalkan hashtable tetapi hashtable tidak?

Seperti mengapa mereka berkelakuan berbeza, itu kerana kamus generik melaksanakan hashtable, tetapi tidak berasaskan sistem.COLLECTIOS.Hashtable. Pelaksanaan Kamus Generik adalah berdasarkan kepada semua nilai kunci utama dari senarai. Ini kemudian diindeks dengan baldi hashtable untuk akses randor, tetapi apabila ia mengembalikan enumerato, ia hanya berjalan senarai dalam urutan yang berurutan - yang akan menjadi sisip.