Meine Karte enthält Schlüssel in alphabetischer Reihenfolge. Wenn ich es zeige, verwende ich entrySet (). Iterator (), aber meine Ergebnisse sind nicht in der alphabetischen Reihenfolge. Wie kann ich meine Ergebnisse in Ordnung bringen?
Verwenden Sie TreeMap :
Eine Rot-Schwarz-basierte
NavigableMap
Implementierung. Die Karte wird nach der natürlichen Reihenfolge ihrer Schlüssel sortiert, oder durch eineComparator
zur Verfügung gestellt zur Kartenerstellung, abhängig davon Konstruktor wird verwendet ...
Nein, Ihre Karte enthält keine Elemente in alphabetischer Reihenfolge. Sie können .put(..)
dann in dieser Reihenfolge haben, aber die Map hat keine definierte Iterationsreihenfolge.
Andere empfehlen die Verwendung von SortedSet
, aber Sie können auch LinkedHashMap
verwenden. . Es garantiert Iterationsreihenfolge:
Diese Implementierung (LinkedHashMap) erspart ihren Clients die nicht spezifizierte, im Allgemeinen chaotische Reihenfolge, die von HashMap (und Hashtable) bereitgestellt wird, ohne dass die mit TreeMap verbundenen erhöhten Kosten anfallen.
Da HashMap
Hashing verwendet, um die Einträge in einem zugrunde liegenden Container zu speichern, wird keine bestimmte Reihenfolge garantiert. Wenn Sie Ihre Einträge von Ihrem HashMap
bestellen möchten, müssen Sie sie selbst sortieren.
A TreeMap
dagegen behält eine gewisse Reihenfolge bei (Sie können dies selbst bestimmen, indem Sie die Comparable
-Schnittstelle implementieren). Wenn Sie also einen Eintrag erhalten, wird er alphabetisch zu Ihnen kommen. String
implementiert bereits Comparable
, sodass sie in alphabetischer Reihenfolge an Sie zurückgegeben werden.
Tags und Links java collections