Itérer sur une carte en Java

1. Vue d'ensemble

Dans cet article rapide, nous examinerons les différentes façons d'itérer les entrées d'une carte en Java.

En termes simples, nous pouvons extraire le contenu d'une carte en utilisant keySet (), valueSet () ou entrySet () . Comme ce sont tous des ensembles, des principes d'itération similaires s'appliquent à tous.

L' API Map.entrySet renvoie une vue de collection de la carte, dont les éléments proviennent de la classe Map . La seule façon d'obtenir une référence à une seule entrée de carte est à partir de l'itérateur de cette vue de collection.

L' entrée entry.getKey () renvoie la clé et entry.getValue () la valeur correspondante.

Jetons un coup d'œil à quelques-uns d'entre eux.

2. EntrySet et for Loop

Voyons d'abord comment parcourir une carte à l'aide du jeu d' entrées :

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

Ici, nous convertissons notre carte en un ensemble d'entrées, puis nous les parcourons en utilisant l'approche classique pour chaque.

Nous pouvons accéder à une clé de chaque entrée en appelant getKey () et nous pouvons accéder à une valeur de chaque entrée en appelant getValue ().

3. Iterator et EntrySet

Une autre approche consisterait à obtenir un ensemble d'entrées et à effectuer l'itération à l'aide d'un itérateur:

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

Notez comment nous pouvons obtenir l' instance Iterator en utilisant l' API iterator () de entrySet (). Puis, comme d'habitude, nous parcourons l'itérateur avec iterator.next ().

4. Avec Lambdas

Voyons maintenant comment itérer une carte à l' aide d' expressions lambda .

Comme la plupart des autres choses dans Java 8, cela s'avère beaucoup plus simple que les alternatives; nous utiliserons la méthode forEach () :

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

Dans ce cas, nous n'avons pas besoin de convertir une carte en un ensemble d'entrées. Pour en savoir plus sur les expressions lambda, vous pouvez commencer ici.

5. API Stream

L' API Stream est l'une des principales fonctionnalités de Java 8 . Nous pouvons également utiliser cette fonctionnalité pour parcourir une carte , mais comme dans les exemples précédents, nous devons d'abord obtenir un ensemble d'entrées:

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

Cela devrait être utilisé lorsque nous prévoyons d'effectuer un traitement supplémentaire de Stream . Sinon, c'est juste un simple forEach () comme décrit précédemment.

Pour en savoir plus sur l' API Stream , consultez cet article.

6. Conclusion

Dans ce didacticiel, nous nous sommes concentrés sur une opération simple mais critique: parcourir les entrées d'une carte.

Nous avons vu quelques méthodes qui ne peuvent être utilisées qu'avec Java 8, à savoir les expressions Lambda et l' API Stream .

Comme toujours, les exemples de code de l'article se trouvent à l'adresse over sur GitHub.