Iterer over et kart i Java

1. Oversikt

I denne raske artikkelen vil vi se på de forskjellige måtene å gjenta gjennom oppføringene til et kart i Java.

Enkelt sagt, vi kan trekke ut innholdet på et kart ved hjelp av keySet (), valueSet () eller entrySet (). Siden disse er alle sett, gjelder lignende iterasjonsprinsipper for dem alle.

De Map.entrySet API returnerer en samlingsvisning av kartet, hvis elementer er fra Kart klasse. Den eneste måten å få referanse til en enkelt kartoppføring er fra iteratoren for denne samlingsvisningen.

T han entry.getKey () returnerer nøkkelen og entry.getValue () returnerer tilsvarende verdi.

La oss se på noen få av disse.

2. EntrySet og for Loop

La oss først se hvordan iterere gjennom en Kart bruker InngangSett:

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

Her konverterer vi kartet vårt til et sett med oppføringer og gjentar det gjennom dem ved hjelp av den klassiske for hver tilnærming.

Vi kan få tilgang til en nøkkel for hver oppføring ved å ringe getKey () og vi kan få tilgang til en verdi av hver oppføring ved å ringe getValue ().

3. Iterator og EntrySet

En annen tilnærming ville være å skaffe et sett med oppføringer og utføre iterasjonen ved hjelp av en Iterator:

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

Legg merke til hvordan vi kan få Iterator eksempel bruker iterator () API av entrySet (). Så, som vanlig, løper vi gjennom iteratoren med iterator.next ().

4. Med Lambdas

La oss nå se hvordan vi kan gjenta et Kart ved hjelp av lambda uttrykkene.

Som de fleste andre ting i Java 8, viser dette seg å være mye enklere enn alternativene; vi vil bruke for hver() metode:

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

I dette tilfellet trenger vi ikke å konvertere et kart til et sett med oppføringer. For å lære mer om lambdauttrykk, kan du starte her.

5. Strøm API

Strøm API er en av hovedtrekkene i Java 8. Vi kan bruke denne funksjonen til å gå gjennom en Kart også, men som i tidligere eksempler, må vi først skaffe et sett med oppføringer:

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

Dette bør brukes når vi planlegger å gjøre noe ekstra Strøm behandling. Ellers er det bare enkelt for hver() som beskrevet tidligere.

For å lære mer om Strøm API, sjekk ut denne artikkelen.

6. Konklusjon

I denne opplæringen har vi fokusert på en enkel, men kritisk operasjon - iterering gjennom oppføringene på et kart.

Vi har sett et par metoder som bare kan brukes med Java 8, nemlig Lambda-uttrykk og Strøm API.

Som alltid kan kodeeksemplene i artikkelen finnes på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found