Scorri su una mappa in Java

1. Panoramica

In questo rapido articolo, daremo uno sguardo ai diversi modi di iterare attraverso le voci di una mappa in Java.

In poche parole, possiamo estrarre il contenuto di una mappa usando keySet (), valueSet () o entrySet () . Poiché sono tutti insiemi, principi di iterazione simili si applicano a tutti loro.

L' API Map.entrySet restituisce una vista della raccolta della mappa, i cui elementi provengono dalla classe Map . L'unico modo per ottenere un riferimento a una singola voce di mappa è dall'iteratore di questa vista raccolta.

La entry.getKey () restituisce la chiave e entry.getValue () restituisce il valore corrispondente.

Diamo un'occhiata ad alcuni di questi.

2. EntrySet e per Loop

Per prima cosa, vediamo come iterare attraverso una mappa usando il set di voci :

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

Qui, convertiamo la nostra mappa in un insieme di voci e quindi le iteriamo utilizzando il classico approccio per ogni.

Possiamo accedere a una chiave di ogni voce chiamando getKey () e possiamo accedere a un valore di ciascuna voce chiamando getValue ().

3. Iteratore e EntrySet

Un altro approccio potrebbe essere quello di ottenere una serie di voci ed eseguire l'iterazione utilizzando un iteratore:

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

Notare come possiamo ottenere l' istanza di Iterator utilizzando l' API iterator () di entrySet (). Quindi, come al solito, eseguiamo il ciclo dell'iteratore con iterator.next ().

4. Con Lambdas

Vediamo ora come iterare una mappa usando espressioni lambda .

Come la maggior parte delle altre cose in Java 8, questo risulta essere molto più semplice delle alternative; faremo uso del metodo forEach () :

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

In questo caso, non è necessario convertire una mappa in un insieme di voci. Per saperne di più sulle espressioni lambda, puoi iniziare qui.

5. Stream API

Stream API è una delle caratteristiche principali di Java 8 . Possiamo usare questa funzione anche per scorrere una mappa ma, come negli esempi precedenti, dobbiamo prima ottenere una serie di voci:

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

Questo dovrebbe essere usato quando abbiamo in programma di eseguire un'elaborazione Stream aggiuntiva . Altrimenti, è solo un semplice forEach () come descritto in precedenza.

Per ulteriori informazioni sull'API Stream , consulta questo articolo.

6. Conclusione

In questo tutorial, ci siamo concentrati su un'operazione semplice ma critica: iterare attraverso le voci di una mappa.

Abbiamo visto un paio di metodi che possono essere utilizzati solo con Java 8, vale a dire le espressioni Lambda e l' API Stream .

Come sempre, gli esempi di codice nell'articolo possono essere trovati su GitHub.