tl; dr
Damit Map< Integer , String >
in einer Reihenfolge sortiert nach Schlüssel, verwenden Sie eine der beiden Klassen die Implementierung SortedMap
/ NavigableMap
Schnittstellen:
TreeMap
ConcurrentSkipListMap
Wenn Sie die Map innerhalb eines einzelnen Threads bearbeiten, verwenden Sie den ersten , TreeMap
. Wenn Sie über mehrere Threads hinweg manipulieren, verwenden Sie die zweite Option.ConcurrentSkipListMap
.
Einzelheiten finden Sie in der folgenden Tabelle und in der folgenden Diskussion.
Einzelheiten
Hier ist eine grafische Tabelle, die ich erstellt habe und die die Merkmale der Zehn zeigt Map
mit Java 11 gebündelten Implementierungen .
Die NavigableMap
Schnittstelle ist das, was SortedMap
eigentlich hätte sein sollen. DasSortedMap
sollte logisch entfernt werden, kann aber nicht sein, da einige Kartenimplementierungen von Drittanbietern möglicherweise eine Schnittstelle verwenden.
Wie Sie in dieser Tabelle sehen können, implementieren nur zwei Klassen die SortedMap
/ NavigableMap
-Schnittstellen:
Beide halten die Schlüssel in sortierter Reihenfolge, entweder nach ihrer natürlichen Reihenfolge (unter Verwendung der compareTo
Methode von Comparable
( https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/). Comparable.html ) Schnittstelle) oder von einer Comparator
Implementierung, die Sie übergeben. Der Unterschied zwischen diesen beiden Klassen ist , dass die zweite, ConcurrentSkipListMap
ist threadsicher , hoch gleichzeitige .
Siehe auch die Spalte Iterationsreihenfolge in der folgenden Tabelle.
- Die
LinkedHashMap
Klasse gibt ihre Einträge in der Reihenfolge zurück, in der sie ursprünglich eingefügt wurden .
EnumMap
Gibt Einträge in der Reihenfolge zurück, in der die Aufzählungsklasse des Schlüssels definiert ist . Beispielsweise verwendet eine Karte, deren Mitarbeiter welchen Wochentag abdeckt ( Map< DayOfWeek , Person >
), die DayOfWeek
in Java integrierte Enum-Klasse. Diese Aufzählung wird mit Montag zuerst und Sonntag zuletzt definiert. Einträge in einem Iterator werden also in dieser Reihenfolge angezeigt.
Die anderen sechs Implementierungen geben kein Versprechen über die Reihenfolge, in der sie ihre Einträge melden.