tl; dr
Damit Map< Integer , String >in einer Reihenfolge sortiert nach Schlüssel, verwenden Sie eine der beiden Klassen die Implementierung SortedMap/ NavigableMapSchnittstellen:
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 NavigableMapSchnittstelle ist das, was SortedMapeigentlich 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 compareToMethode von Comparable( https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/). Comparable.html ) Schnittstelle) oder von einer ComparatorImplementierung, die Sie übergeben. Der Unterschied zwischen diesen beiden Klassen ist , dass die zweite, ConcurrentSkipListMapist threadsicher , hoch gleichzeitige .
Siehe auch die Spalte Iterationsreihenfolge in der folgenden Tabelle.
- Die
LinkedHashMapKlasse gibt ihre Einträge in der Reihenfolge zurück, in der sie ursprünglich eingefügt wurden .
EnumMapGibt 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 DayOfWeekin 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.
