3779 Stimmen

Iterieren durch eine HashMap

Was ist der beste Weg, um über die Elemente in einer HashMap ?

7 Stimmen

Ich muss die Schlüssel und Werte abrufen und sie zu einem mehrdimensionalen Array hinzufügen

8 Stimmen

In Java 8 mit Lambda-Ausdruck : stackoverflow.com/a/25616206/1503859

76voto

jkarretero Punkte 961

Klüger:

for (String key : hashMap.keySet()) {
    System.out.println("Key: " + key + ", Value: " + map.get(key));
}

10 Stimmen

Dies hängt tatsächlich davon ab, ob Sie die Schlüssel benötigen oder nicht. Wenn nicht, ist es effizienter, entrySet() zu verwenden, da hashCode() nicht aufgerufen wird.

17 Stimmen

Map.get(key) für jede Iteration ist nicht intelligenter, sondern viel langsamer.

2 Stimmen

Map.entrySet(), die Einträge zurückgibt, die bereits sowohl den Schlüssel als auch den Wert enthalten. Auf diese Weise müssen Sie nicht hashCode() aufrufen und den Hash während der Iteration durchsuchen.

56voto

Gary Kephart Punkte 4698

Kommt drauf an. Wenn Sie wissen, dass Sie sowohl den Schlüssel als auch den Wert eines jeden Eintrags benötigen, dann gehen Sie durch die entrySet . Wenn Sie nur die Werte benötigen, dann gibt es die values() Methode. Und wenn Sie nur die Schlüssel benötigen, dann verwenden Sie keyset() .

Eine schlechte Praxis wäre es, durch alle Schlüssel zu iterieren und dann innerhalb der Schleife immer map.get(key) um den Wert zu erhalten. Wenn Sie das tun, dann ist die erste Option, die ich schrieb, für Sie.

1 Stimmen

Ein weiterer wichtiger Punkt: Das von keySet() zurückgegebene Set und die von values() zurückgegebene Collection werden beide von der ursprünglichen Map unterstützt. Das heißt, wenn Sie eine Änderung in ihnen vornehmen, werden sie in der Map zurückgespiegelt. Allerdings unterstützen beide keine add()- und addAll()-Methoden, d.h. Sie können keinen neuen Schlüssel zum Set oder einen neuen Wert in der Collection hinzufügen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X