3898 Stimmen

Wie kann ich effizient über jeden Eintrag in einer Java Map iterieren?

Wenn ich ein Objekt habe, das die Map Schnittstelle in Java und ich möchte über jedes darin enthaltene Paar iterieren. Wie kann ich die Karte am effizientesten durchlaufen?

Hängt die Reihenfolge der Elemente von der spezifischen Kartenimplementierung ab, die ich für die Schnittstelle habe?

46 Stimmen

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

5 Stimmen

15voto

anandchaugule Punkte 743

Eine effektive iterative Lösung über eine Map ist eine for Schleife von Java 5 bis Java 7. H

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

Ab Java 8 können Sie einen Lambda-Ausdruck verwenden, um über eine Map zu iterieren. Dies ist eine erweiterte forEach

phnMap.forEach((k,v) -> System.out.println("Key: " + k + " Value: " + v));

Wenn Sie eine Bedingung für Lambda schreiben wollen, können Sie sie wie folgt schreiben:

phnMap.forEach((k,v)->{
    System.out.println("Key: " + k + " Value: " + v);
    if("abc".equals(k)){
        System.out.println("Hello abc");
    }
});

14voto

ABHAY JOHRI Punkte 1537

Verwenden Sie Java 8:

map.entrySet().forEach(entry -> System.out.println(entry.getValue()));

14voto

Pranoti Punkte 978

Sie können es mit Generika tun:

Map<Integer, Integer> map = new HashMap<Integer, Integer>();
Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();
while (entries.hasNext()) {
    Map.Entry<Integer, Integer> entry = entries.next();
    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}

13voto

           //Functional Oprations
            Map<String, String> mapString = new HashMap<>();
            mapString.entrySet().stream().map((entry) -> {
                String mapKey = entry.getKey();
                return entry;
            }).forEach((entry) -> {
                String mapValue = entry.getValue();
            });

            //Intrator
            Map<String, String> mapString = new HashMap<>();
            for (Iterator<Map.Entry<String, String>> it = mapString.entrySet().iterator(); it.hasNext();) {
                Map.Entry<String, String> entry = it.next();
                String mapKey = entry.getKey();
                String mapValue = entry.getValue();
            }

            //Simple for loop
            Map<String, String> mapString = new HashMap<>();
            for (Map.Entry<String, String> entry : mapString.entrySet()) {
                String mapKey = entry.getKey();
                String mapValue = entry.getValue();

            }

11voto

shivampip Punkte 1636

Iteration einer Karte ist sehr einfach.

for(Object key: map.keySet()){
   Object value= map.get(key);
   //Do your stuff
}

Sie haben zum Beispiel eine Map<String, int> data;

for(Object key: data.keySet()){
  int value= data.get(key);
}

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