Unterschied zwischen Dictionary und Hashtable

Anonim

Dictionary vs Hashtable

Das Wörterbuch wird getippt (da Wertetypen kein Bxxing benötigen), ein Hashtable ist nicht Wertetypen müssen bxxing sein). Hashtable hat einen schöneren Weg, einen Wert als Dictionary IMH0 zu erhalten, da immer der Wert ein Objekt ist. Ob Sie verwenden. NET 3. 5, ist es einfach, ein extensiîn method für Wörterbuch zu schreiben, um ähnliches Verhalten zu erhalten.

Die Hashtable-Klasse ist ein bestimmter Typ einer Wörterbuchklasse, die einen ganzzahligen Wert (als Hash bezeichnet) verwendet, um das Stapeln der Schlüssel zu unterstützen. Die Hashtable-Klasse verwendet den Hash, um die Suche nach einem bestimmten Schlüssel in der Anwendung zu beschleunigen. Jedes Objekt in. NET stammt aus der Klasse Оbject. Diese Klasse unterstützt das GetHash-Verfahren, das eine Ganzzahl zurückgibt, die das Objekt eindeutig kennzeichnet. Die Hashtable-Klasse ist im Allgemeinen eine sehr effiziente Lösung. Das einzige Problem bei der Hashtable-Klasse besteht darin, dass ein wenig Kopf erforderlich ist, und für kleine Beleuchtungen (weniger als zehn Elemente) kann der Kopf die Perfomance verhindern.

Es gibt einen größeren Unterschied zwischen einem HashTable und einem Dictionary. Wenn Sie Indexer verwenden, um einen Wert von einem HashTable zu erhalten, gibt das HashTable erfolgreich Null für ein nicht existierendes Element zurück, während das Wörterbuch einen Fehler erleidet, wenn Sie mit einem Indexer, der nicht im Wörterbuch vorhanden ist, auf ein Objekt zugreifen.

Die HashTable ist die Basisklasse, die schwach typisiert ist. Die abstrakte DictionaryBase-Klasse wird streng typisiert und verwendet intern eine HashTable.

Eine seltsame Sache, die über Dictionary bemerkt wird, ist, wenn wir die mehrfachen Einträge in Dictionary hinzufügen, der Benutzer, in dem die Einträge hinzugefügt werden, beibehalten wird. Wenn Sie also einen Absatz auf das Wörterbuch anwenden, erhalten Sie die Antworten in demselben Ordner, in den Sie sie eingefügt haben. Während dies bei noemmalem HashTable nicht der Fall ist, wenn Sie in Hashtable dieselben Recodes hinzufügen, wird der Benutzer nicht beibehalten. Wenn "Wörterbuch basiert auf Hashtable" wahr ist, wieso Dictionary den Lehrer beibehält, aber HashTable nicht?

Warum sie sich anders verhalten, liegt daran, dass Generic Dictionary eine Hashtabelle implementiert, aber nicht auf dem System basiert. Elektrizität. Hash-tabelle. Die Implementierung des generischen Wörterbuchs basiert auf der Auswahl von Schlüssel-Wert-Paaren aus einer Liste. Diese werden dann mit den Hashtable-Buckets für den Randzugriff indiziert. Wenn sie jedoch ein Enumerat zurückgibt, wird die Liste nur in sequenziellen Schritten weitergeleitet. Dies wird derjenige sein, der als Eintrag verwendet wird, wenn Einträge nicht wiederverwendet werden.