Schleife Java HashMap wie Python Dictionary?

7

In Python können Sie Schlüssel- und Wertepaare in einem Wörterbuch verwenden, in dem Sie sie durchlaufen können, wie unten gezeigt:

%Vor%

Gibt es eine Möglichkeit, dies mit Java HashMaps zu tun?

    
Federer 01.07.2010, 12:06
quelle

5 Antworten

20

Ja - zum Beispiel:

%Vor%     
Richard Fearn 01.07.2010, 12:11
quelle
6

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.

    
user159088 01.07.2010 12:11
quelle
6

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).

  1. Iterate über Map#entrySet() :

    %Vor%
  2. Iterate über Map#keySet() und dann verwende Map#get() um den Wert für jeden Schlüssel zu erhalten:

    %Vor%

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):

%Vor%

Beachten Sie, dass Lesbarkeit gegenüber vorzeitigen Optimierungen vorzuziehen ist, aber es ist wichtig, dies zu beachten.

    
BalusC 01.07.2010 14:01
quelle
3
%Vor%

So ähnlich ...

    
Marcelo Lacerda 01.07.2010 12:13
quelle
1

In Java können Sie dasselbe wie folgt tun.

%Vor%     
bragboy 01.07.2010 12:14
quelle

Tags und Links