Hashtable



  • hi, ich hätte eine Frage.
    ich habe eine Hash Table folgendermaßen gefüllt:

    Hashtable myHash = new Hashtable();
                myHash.Add("eins", 100);
                myHash.Add("zwei", 200);
                myHash.Add("drei", 300);
                myHash.Add("vier", 400);
                myHash.Add("fünf", "lol");
                foreach (object obj in myHash.Keys)
                    Console.WriteLine(obj);
    

    Und mir dann mit der foreach schleife die Schlüssel anzeigen lassen.
    Was mich überrascht hat war, dass diese Sclüssel (und damit auch die Werte) in einer ganz anderen Reihenfolge ausgegeben werden, als ich sie mit Add eingetragen habe, nämlich vier eins fünf zwei drei. Wird das intern irgendwie sortiert oder warum ist das so?



  • Beachte den Wortbestandteil "Hash" in Hashtable, dann sollte klar sein warum die nicht in der Eingabereihenfolge ausgegeben werden.



  • `Hashtable` soll nicht mehr verwendet werden und ist nur noch zur Abwärtskompatibilität vorhanden! Verwende stattdessen die `Dictionary`-Klasse aus `System.Collections.Generic`. Aber auch dort gilt dasselbe: Durch die implementierung sind die Elemente nicht geordnet. Wenn Du sowas brauchst, kannst Du stattdessen die Klassen `SortedList` oder `SortedDictionary` verwenden. Beachte aber, dass diese ein anderes Laufzeitverhalten haben.


Anmelden zum Antworten