Iterera över en karta i Java

1. Översikt

I den här snabba artikeln kommer vi att titta på de olika sätten att itera genom posterna på en karta i Java.

Enkelt uttryckt kan vi extrahera innehållet på en karta med hjälp av keySet (), valueSet () eller entrySet () . Eftersom dessa är alla uppsättningar gäller liknande iterationsprinciper för dem alla.

Den Map.entrySet API returnerar en samling-vy av kartan, vars element är från Kart klassen. Det enda sättet att få en referens till en enda kartpost är från iteratorn för denna samlingsvy.

T han entry.getKey () returnerar nyckeln och entry.getValue () returnerar den motsvarande värde.

Låt oss ta en titt på några av dessa.

2. EntrySet och för Loop

Låt oss först se hur man iterera genom en karta med hjälp av Entry Set :

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

Här konverterar vi vår karta till en uppsättning poster och sedan itererar dem genom att använda det klassiska för varje tillvägagångssätt.

Vi kan komma åt en nyckel för varje post genom att ringa getKey () och vi kan komma åt ett värde för varje post genom att ringa getValue ().

3. Iterator och EntrySet

Ett annat tillvägagångssätt skulle vara att få en uppsättning poster och utföra iterationen med en Iterator:

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()); } }
    

Lägg märke till hur vi kan få Iterator- instansen med iterator () API för entrySet (). Sedan slingrar vi som vanligt genom iteratorn med iterator.next ().

4. Med Lambdas

Låt oss nu se hur man kan itera en karta med lambdauttryck .

Liksom de flesta andra saker i Java 8 visar det sig att vara mycket enklare än alternativen; vi använder metoden forEach () :

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

I det här fallet behöver vi inte konvertera en karta till en uppsättning poster. För att lära dig mer om lambdauttryck kan du börja här.

5. Stream API

Stream API är en av huvudfunktionerna i Java 8 . Vi kan också använda den här funktionen för att gå igenom en karta, men som i tidigare exempel måste vi först få en uppsättning poster:

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

Detta bör användas när vi planerar att göra ytterligare Stream- bearbetning. Annars är det bara enkelt förEach () som beskrivits tidigare.

Läs den här artikeln om du vill lära dig mer om Stream API.

6. Sammanfattning

I denna handledning har vi fokuserat på en enkel men kritisk operation - iterering genom posterna på en karta.

Vi har sett ett par metoder som endast kan användas med Java 8, nämligen Lambda-uttryck och Stream API.

Som alltid kan kodexemplen i artikeln hittas på GitHub.