Heim >Backend-Entwicklung >C++ >Warum garantiert das C#-Wörterbuch die Reihenfolge der Elemente nicht und wie kann ich die alphabetische Reihenfolge sicherstellen?
Die C#-Wörterbuchreihenfolge (oder deren Fehlen) verstehen
Viele C#-Entwickler gehen fälschlicherweise davon aus, dass Dictionary
Elemente in der Einfügereihenfolge zurückgegeben werden. Das ist falsch. Das folgende Beispiel verdeutlicht dies:
<code class="language-csharp">// Dictionary declaration private Dictionary<string, string> _Dictionary = new Dictionary<string, string>(); // Add elements _Dictionary.Add("orange", "1"); _Dictionary.Add("apple", "4"); _Dictionary.Add("cucumber", "6"); _Dictionary["banana"] = "7"; _Dictionary["pineapple"] = "7"; // Iterate and observe the order (non-deterministic) foreach (KeyValuePair<string, string> kvp in _Dictionary) { Trace.Write(String.Format("{0}={1}", kvp.Key, kvp.Value)); }</code>
Die Ausgabe ist unvorhersehbar, da Dictionary
eine Hash-Tabelle verwendet, die effiziente Schlüsselsuchen Vorrang vor der Aufrechterhaltung der Einfügungsreihenfolge hat. Die Reihenfolge der Iteration ist nicht garantiert und kann variieren.
Erzwingen der alphabetischen Reihenfolge mit SortedDictionary
Wenn Sie Elemente alphabetisch sortiert benötigen, verwenden Sie stattdessen SortedDictionary
. Diese Klasse behält die sortierte Reihenfolge basierend auf dem Vergleicher des Schlüssels bei (Standard ist alphabetisch für Zeichenfolgen).
<code class="language-csharp">// SortedDictionary declaration private SortedDictionary<string, string> _SortedDictionary = new SortedDictionary<string, string>(); // Add elements _SortedDictionary.Add("orange", "1"); _SortedDictionary.Add("apple", "4"); _SortedDictionary.Add("cucumber", "6"); _SortedDictionary.Add("banana", "7"); _SortedDictionary.Add("pineapple", "7"); // Iterate and observe the alphabetical order foreach (KeyValuePair<string, string> kvp in _SortedDictionary) { Trace.Write(String.Format("{0}={1}", kvp.Key, kvp.Value)); }</code>
Dies führt zu einer konsistent alphabetisch sortierten Ausgabe. Beachten Sie, dass SortedDictionary
im Vergleich zu Dictionary
einen Leistungsaufwand mit sich bringt. Verwenden Sie es daher nur, wenn die Reihenfolge unerlässlich ist.
Das obige ist der detaillierte Inhalt vonWarum garantiert das C#-Wörterbuch die Reihenfolge der Elemente nicht und wie kann ich die alphabetische Reihenfolge sicherstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!