Tl;dr
Um die Map< Integer , String >
in einer nach Schlüssel sortierten Reihenfolge zu erstellen, verwenden Sie eine der beiden Klassen, die die SortedMap
/ NavigableMap
Schnittstellen:
oder Implementierungen Dritter. Vielleicht in Google Guava o Eclipse-Kollektionen (Ich habe es nicht überprüft).
Wenn Sie die Karte in einem einzigen Thread bearbeiten, verwenden Sie den ersten, TreeMap
. Wenn Sie über mehrere Threads hinweg manipulieren, verwenden Sie den zweiten, ConcurrentSkipListMap
.
Einzelheiten sind der nachstehenden Tabelle und den folgenden Ausführungen zu entnehmen.
Einzelheiten
Hier ist eine grafische Tabelle, die ich erstellt habe und die die Merkmale der zehn Map
Implementierungen, die mit Java 11 gebündelt werden.
En NavigableMap
Schnittstelle ist der Nachfolger von SortedMap
. En SortedMap
sollte logischerweise entfernt werden, kann es aber nicht, da einige Kartenimplementierungen von Drittanbietern die Schnittstelle verwenden können.
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 (mit compareTo
Methode der Comparable
( https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Comparable.html ) Schnittstelle) oder durch eine Comparator
Implementierung bestehen Sie. Der Unterschied zwischen diesen beiden Klassen ist, dass die zweite Klasse, ConcurrentSkipListMap
ist thread-safe hoch gleichzeitig .
をご覧ください。 Iterationsreihenfolge Spalte in der nachstehenden Tabelle.
- En
LinkedHashMap
Klasse gibt ihre Einträge in der Reihenfolge zurück, in der sie ursprünglich eingefügt .
EnumMap
gibt die Einträge in der Reihenfolge zurück, in der die Enum-Klasse des Schlüssels definiert ist . Zum Beispiel eine Karte, die zeigt, welcher Mitarbeiter für welchen Wochentag zuständig ist ( Map< DayOfWeek , Person >
) verwendet die DayOfWeek
Enum-Klasse, die in Java integriert ist. Diese Aufzählung ist so definiert, dass der Montag an erster und der Sonntag an letzter Stelle steht. Die Einträge in einem Iterator werden also in dieser Reihenfolge angezeigt.
Die anderen sechs Umsetzungen machen keine Zusagen über die Reihenfolge, in der sie ihre Einträge melden.