Differenza tra Dizionario e Hashtable

Anonim

Dizionario vs Hashtable

Dizionario è digitato (sò tipo di valuta non necessita di bossing), un Hashtable non è (s i tipi di valuta sono necessari). Hashtable ha un modo più bello di ottenere un valore rispetto al dizionario IMHО, perché sempre conosce che il valore è un oggetto. Quindi se usi. NET 3. 5, è facile scrivere un dizionario extensión meto per il comportamento simile.

La classe Hashtable è un tipo specifico di classe di dizionari che utilizza un valore intero (chiamato hash) per aiutare nello stormo delle sue chiavi. La classe Hashtable utilizza il hash per velocizzare la ricerca di una chiave specifica nella colla. Ogni oggetto in. NET deriva dalla classe Оbject. Questa classe supporta il metodo GetHash, che restituisce un intero che identifica in modo univoco l'oggetto. La classe Hashtable è un compito molto efficiente in generale. L'unico problema con la classe Hashtable è che richiede un po 'di overhead, e per piccoli contatti (meno di dieci elementi) l'overhead può ostacolare la perfomance.

C'è un'importante differenza tra un HashTable e un Dizionario. Se si utilizzano gli indici per ottenere un valore di un HashTable, l'HashTable restituisce con successo null per un elemento non esistente, mentre il dizionario potrebbe causare errori se si tenta di accedere a un elemento utilizzando un indice che non esiste nel dizionario.

L'HashTable è la classe di base debolmente digitata; la classe astratta DictionaryBase è strettamente digitata e utilizza internamente un HashTable.

Una cosa strana che si nota oltre il dizionario è, quando aggiungiamo le voci multiple nel dizionario, viene mantenuto il comando in cui vengono aggiunte le voci. Quindi, se si applica un rapporto sul dizionario, si riceveranno i recapiti nello stesso modo in cui li avete inseriti. Mentre, questo non è vero con il nastro HashTable, quando si aggiungono le stesse operazioni in Hashtable, il server non viene mantenuto. Se 'Dictionary is based on Hashtable' è vero, perché il dizionario mantiene l'orrder, ma HashTable non lo dice?

Perché si comportano diversamente, è perché il dizionario generico implementa un hashtable, ma non è basato su un sistema. Cоllectiоns. Tabella hash. L'implementazione del dizionario generico si basa su un insieme di coppie di valori-valore di un elenco. Questi vengono poi indicizzati con i bucket hashtable per l'accesso randоm, ma quando restituisce un enumerator, si passa solo in ordine sequenziale, che sarà l'ordinamento dell'inserzione come le voci non vengono riutilizzate.