Frage Was ist der Hauptunterschied zwischen Dictionary und Hashtable?


Was ist der Unterschied zwischen Dictionary und Hashtable? Wie kann ich zum Abschluss kommen, um zu verwenden? Kann mir bitte jemand helfen?


5
2018-03-03 09:40


Ursprung


Antworten:


Die Dictionary-Klasse unterscheidet sich von der   Hashtable-Klasse in mehr als einer Hinsicht.   Zusätzlich zu stark typisiert werden,   das Wörterbuch verwendet auch a   unterschiedliche Kollisionsauflösung   Strategie als die Hashtable-Klasse,   unter Verwendung einer Technik, die als bezeichnet wird   Verkettung.

Sie können diesen Artikel lesen: http://msdn.microsoft.com/en-us/library/ms379571(v=vs.80).aspx#datastructures20_2_topic6

Es ist wirklich nützlich.


6
2018-03-03 09:43



Hashtable ist veraltet. Verwenden Sie immer Dictionary.


1
2018-03-03 09:43



Ich bin auch ein Neuling in Hashtables, aber ...

Das Dictionary ist eine Basistabelle mit zwei Spalten (Schlüssel und Wert, beide haben bestimmte Typen) und viele Zeilen, die Sie später hinzufügen. Sie werden sehen, dass Sie im Wörterbuch einen Schlüssel geben und das Wörterbuch Ihnen den Wert gibt, den Sie vorher mit dem absolut gleichen Schlüssel hinzugefügt haben.

Bei Hashtables sind die Dinge etwas anders. Sie haben wieder eine Tabelle mit zwei Spalten (Schlüssel und Wert, beide sind vom Typ "Objekt"). Die Schlüssel sind möglicherweise nicht eindeutig. Jetzt haben Sie virtuell zwei Tabellen: eine mit zwei Spalten: Key und Hash, und andere mit wiederum zwei Spalten Hash und Value. Hash ist ein ganzzahliger Wert, der von Key erhalten wurde. Es stellt sich heraus, dass Keys möglicherweise einzigartig sind, Hashes jedoch nicht. [Aber ich bin mir nicht sicher ... also sagte ich "virtuell" ...]

Jetzt Beispiel:

Hashtable ht = new Hashtable();
// Key of type Int32
ht[16] = "That is Int32";
// Key of type String
ht["Blah"] = 15;
// Key of type Boolean
ht[false] = "That is boolean";
// Key of type String
ht["Hohoho"] = false;

Und später können Sie auf jeden in Hashtable gespeicherten Wert nur mit Schlüsseln zugreifen (wenn es keinen solchen Schlüssel gibt, gibt er null zurück):

Console.WriteLine("ht[{0}] = {1};", 16, ht[16] ?? "null");
Console.WriteLine("ht[{0}] = {1};", "Test", ht["Test"] ?? "null"); // doesnt exist eh...
Console.WriteLine("ht[{0}] = {1};", false, ht[false] ?? "null");
Console.WriteLine("ht[{0}] = {1};", "Hohoho", ht["Hohoho"] ?? "null");

Um es zusammenzufassen:

Wörterbuch ist das:

[ Key ][ Value ]
   A      1.5
   B      1.6
   C      -8
     ....

Und Hashtable ist wahrscheinlich das:

[ Key ][ Hash ]
   A      1
   B      2
   C     -99
      ...

[ Hash ][ Value ]
   -99      -8
    1       1.6
    2       1.5
      ....

Ich hoffe, das ist hilfreich. Wer es besser erklären könnte, zögert nicht.

Danke und viel Glück.


1
2018-03-03 10:03