HashMap sortiert nichts.
HashMap (Java SE 11 & JDK 11 )
Diese Klasse garantiert nicht die Reihenfolge der Karten. Insbesondere übernehmen wir keine Garantie dafür, dass die Reihenfolge immer konstant bleibt.
SortedMap realisiert die Sortierung nach Schlüssel. Die von den Methoden entrySet, keySet und values zurückgegebenen Schlüssel und Werte werden nach der Schlüsselreihenfolge sortiert.
SortedMap (Java SE 11 & JDK 11 )
Eine Karte, die eine globale Reihenfolge für diesen Schlüssel bietet. Die Kartenreihenfolge kann gemäß der natürlichen Reihenfolge der Schlüssel oder mit dem Composer erfolgen, der normalerweise beim Erstellen einer Sortierkarte bereitgestellt wird. Diese Reihenfolge wird während der iterativen Verarbeitung der Sortierkartensammlungsansicht (von den Methoden entrySet, keySet, values zurückgegeben) wiedergegeben. Es werden einige zusätzliche Vorgänge bereitgestellt, um diese Bestellung zu nutzen. (Diese Schnittstelle ist eine Karte und ähnelt SortedSet.)
TreeMap implementiert die SortedMap-Schnittstelle, sodass die Schlüsselsortierung erfolgt.
TreeMap (Java SE 11 & JDK 11 )
Red-NavigableMap-Implementierung basierend auf Black Tree. Karten werden je nach verwendetem Konstruktor nach der natürlichen Reihenfolge ihrer Schlüssel oder nach dem bei der Kartenerstellung bereitgestellten Komparator sortiert.
Quellcode zur Überprüfung des Verhaltens von HashMap und TreeMap.
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class Sample {
public static void main(String[] args) {
//Erstellen Sie HashMap
//Bestellung ist nicht garantiert
Map<String, String> hashMap = new HashMap<String, String>();
hashMap.put("0001", "Alice");
hashMap.put("0002", "Bob");
hashMap.put("0003", "Carol");
hashMap.put("0004", "Dave");
hashMap.put("0005", "Ellen");
System.out.println("HashMap");
for (String key : hashMap.keySet()) {
System.out.println(key + ": " + hashMap.get(key));
}
System.out.println();
//Erstellen Sie TreeMap
//Sortiert automatisch in aufsteigender Reihenfolge der Schlüssel
Map<String, String> treeMap = new TreeMap<String, String>(hashMap);
System.out.println("TreeMap");
for (String key : treeMap.keySet()) {
System.out.println(key + ": " + treeMap.get(key));
}
System.out.println();
//Wenn Sie TreeMap einen Wert hinzufügen, wird dieser automatisch in aufsteigender Reihenfolge der Schlüssel sortiert.
treeMap.put("0000", "XXXXX");
System.out.println("TreeMap");
for (String key : treeMap.keySet()) {
System.out.println(key + ": " + treeMap.get(key));
}
System.out.println();
}
}
Ausführungsergebnis. HashMap sortiert nichts. TreeMap ist in aufsteigender Reihenfolge der Schlüssel sortiert.
HashMap
0004: Dave
0005: Ellen
0002: Bob
0003: Carol
0001: Alice
TreeMap
0001: Alice
0002: Bob
0003: Carol
0004: Dave
0005: Ellen
TreeMap
0000: XXXXX
0001: Alice
0002: Bob
0003: Carol
0004: Dave
0005: Ellen
$ java --version
openjdk 11.0.2 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
Recommended Posts