Typischer Code für die Iteration über eine Karte ist:
Map<String,Thing> map = ...;
for (Map.Entry<String,Thing> entry : map.entrySet()) {
String key = entry.getKey();
Thing thing = entry.getValue();
...
}
HashMap
ist die kanonische Map-Implementierung und gibt keine Garantien (oder sollte die Reihenfolge nicht ändern, wenn keine mutierenden Operationen darauf ausgeführt werden). SortedMap
gibt Einträge zurück, die auf der natürlichen Reihenfolge der Schlüssel basieren, oder eine Comparator
falls vorhanden. LinkedHashMap
gibt entweder Einträge in Einfüge- oder Zugriffsreihenfolge zurück, je nachdem, wie es aufgebaut ist. EnumMap
gibt die Einträge in der natürlichen Reihenfolge der Schlüssel zurück.
(Update: Ich glaube, das stimmt nicht mehr. ) Hinweis, IdentityHashMap
entrySet
Iterator hat derzeit eine eigentümliche Implementierung, die das gleiche zurückgibt Map.Entry
Instanz für jedes Element in der entrySet
! Allerdings wird jedes Mal, wenn ein neuer Iterator vorrückt, die Map.Entry
aktualisiert wird.
46 Stimmen
In Java 8 mit Lambda-Ausdruck: stackoverflow.com/a/25616206/1503859
5 Stimmen
Java 8: stackoverflow.com/questions/46898/