Das HashMap.entrySet () gibt die Beans der Schlüsselwertpaare ähnlich wie die dictionary.iteritems () zurück. Sie können sie dann durchlaufen.
Ich denke, das ist der Python-Version am nächsten.
Wie in den Antworten gezeigt, gibt es grundsätzlich zwei Möglichkeiten, über ein Map
zu iterieren (nehmen wir Map<String, String>
in diesen Beispielen an).
Iterate über Map#entrySet()
:
Iterate über Map#keySet()
und dann verwende Map#get()
um den Wert für jeden Schlüssel zu erhalten:
Der zweite ist vielleicht besser lesbar, aber er hat einen Performancekosten, bei jeder Iteration unnötigerweise get()
aufzurufen. Ein Argument könnte sein, dass das Erstellen des Keyset-Iterators weniger teuer ist, da die Werte nicht berücksichtigt werden müssen. Aber glauben Sie es oder nicht, das keySet().iterator()
erstellt und verwendet den selben Iterator als entrySet().iterator()
. Der einzige Unterschied besteht darin, dass im Fall von keySet()
der next()
-Aufruf des Iterators it.next().getKey()
anstelle von it.next()
zurückgibt.
Die AbstractMap#keySet()
s javadoc beweist dies:
Die Iterator-Methode der Unterklasse gibt ein "Wrapper-Objekt" über den
entrySet()
Iterator dieser Map zurück.
Der AbstractMap
Quellcode beweist dies auch. Hier ist ein Auszug von keySet()
Methode (irgendwo um Zeile 300 in Java 1.6):
Beachten Sie, dass Lesbarkeit gegenüber vorzeitigen Optimierungen vorzuziehen ist, aber es ist wichtig, dies zu beachten.
Tags und Links python java hashmap equivalent