Iterieren Sie über eine Karte in Java

1. Übersicht

In diesem kurzen Artikel werden die verschiedenen Möglichkeiten zum Durchlaufen der Einträge einer Karte in Java erläutert.

Einfach ausgedrückt können wir den Inhalt einer Karte mit keySet (), valueSet () oder entrySet () extrahieren . Da dies alles Mengen sind, gelten für alle ähnliche Iterationsprinzipien.

Die Map.entrySet- API gibt eine Sammlungsansicht der Karte zurück, deren Elemente aus der Map- Klasse stammen. Die einzige Möglichkeit, einen Verweis auf einen einzelnen Karteneintrag zu erhalten, ist der Iterator dieser Sammlungsansicht.

D ie entry.getKey () gibt die Schlüssel und entry.getValue () den entsprechenden Wert zurückgibt.

Schauen wir uns einige davon an.

2. EntrySet und for Loop

Lassen Sie uns zunächst sehen , wie man durch eine iterieren Karte mit dem Eintrag Set :

public void iterateUsingEntrySet(Map map) { for (Map.Entry entry : map.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } }

Hier konvertieren wir unsere Karte in eine Reihe von Einträgen und durchlaufen sie dann mit dem klassischen Ansatz für jeden Eintrag.

Wir können auf einen Schlüssel jedes Eintrags zugreifen, indem wir getKey () aufrufen, und wir können auf einen Wert jedes Eintrags zugreifen, indem wir getValue () aufrufen .

3. Iterator und EntrySet

Ein anderer Ansatz wäre, eine Reihe von Einträgen zu erhalten und die Iteration mit einem Iterator durchzuführen :

public void iterateUsingIteratorAndEntry(Map map) { Iterator
    
      iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = iterator.next(); System.out.println(entry.getKey() + ":" + entry.getValue()); } }
    

Beachten Sie, wie wir die bekommen kann Iterator - Instanz , die mit iterator () API von entrySet (). Dann durchlaufen wir wie üblich den Iterator mit iterator.next ().

4. Mit Lambdas

Lassen Sie uns nun sehen, wie eine Karte mit Lambda- Ausdrücken iteriert wird .

Wie die meisten anderen Dinge in Java 8 ist dies viel einfacher als die Alternativen. Wir werden die forEach () -Methode verwenden:

public void iterateUsingLambda(Map map) { map.forEach((k, v) -> System.out.println((k + ":" + v))); } 

In diesem Fall müssen wir eine Karte nicht in eine Reihe von Einträgen konvertieren. Um mehr über Lambda-Ausdrücke zu erfahren, können Sie hier beginnen.

5. Stream- API

Die Stream- API ist eine der Hauptfunktionen von Java 8 . Wir können diese Funktion auch zum Durchlaufen einer Karte verwenden, aber wie in den vorherigen Beispielen müssen wir zuerst eine Reihe von Einträgen erhalten:

public void iterateUsingStreamAPI(Map map) { map.entrySet().stream() // ... .forEach(e -> System.out.println(e.getKey() + ":" + e.getValue())); } 

Dies sollte verwendet werden, wenn wir eine zusätzliche Stream- Verarbeitung planen . Ansonsten ist es nur ein einfaches forEach (), wie zuvor beschrieben.

Weitere Informationen zur Stream- API finden Sie in diesem Artikel.

6. Fazit

In diesem Tutorial haben wir uns auf eine einfache, aber kritische Operation konzentriert - das Durchlaufen der Einträge einer Karte.

Wir haben einige Methoden gesehen, die nur mit Java 8 verwendet werden können, nämlich Lambda-Ausdrücke und die Stream- API.

Wie immer finden Sie die Codebeispiele im Artikel auf GitHub.