Java 8 - Exemples de la boucle forEach

Java 8 fournit des fonctionnalités additionnels et de nouveaux méthodes pour réaliser le parcourt. Il existe des scénarios ou ces nouveaux concepts sont plus performants et recommandés.

La majorité des fonctionnalités Java 8 concentre sur les expressions lambda, ainsi que les fonctionalités reliés tel que les flux, méthodes et les interfaces. Une autre caractéristique dans Java 8 est la boucle forEach.

forEach() peut être implémentée pour qu'elle soit plus rapide que la boucle for-each, en Java 8 l'interface iterable utilise la méthode la plus optimisée pour parcourir les éléments contrairement à la méthode standard de parcourt.

Dans cet article, vous allez apprendre comment parcourir une java.util.List et une java.util.Map avec une nouvelle boucle forEach de java 8.

forEach et java.util.Map

Ce code montre la façon habituelle pour parcourir une Map:

Map map = new HashMap<>();
map.put(1, "A");
map.put(2, "B");
map.put(3, "C");
map.put(4, "D");
map.put(5, "E");

for (Map.Entry entry : map.entrySet()) {
System.out.println("Clé : " + entry.getKey() + " Valeur : " + entry.getValue());
}
Avec Java 8, vous pouvez parcourir une Map avec la boucle forEach et l'expression lambda.

Map map = new HashMap<>();
map.put(1, "A");
map.put(2, "B");
map.put(3, "C");
map.put(4, "D");
map.put(5, "E");

items.forEach((k,v)->System.out.println("clé : " + k + " Valeur : " + v));

items.forEach((k,v)->{
System.out.println("clé : " + k + " Valeur : " + v);
if("D".equals(v)){
System.out.println("D");
}
});

forEach et java.util.List

Cet exemple de code montre le parcourt habituel avec la boucle for:

List arraylist = new ArrayList<>();
arraylist.add("A");
arraylist.add("B");
arraylist.add("C");
arraylist.add("D");
arraylist.add("E");
arraylist.add("F");

for(String val : arraylist){
System.out.println(val);
}
En Java 8, vous pouvez parcourir une List avec forEach, expression lambda ou référence de méthode.

List arraylist = new ArrayList<>();
arraylist.add("AB");
arraylist.add("BC");
arraylist.add("CD");
arraylist.add("DE");
arraylist.add("EF");
arraylist.add("FG");

//lambda
arraylist.forEach(item->System.out.println(item));

arraylist.forEach(item->{
if("D".equals(item)){
System.out.println(item);
}
});

//reference de méthode
arraylist.forEach(System.out::println);

//Créer un filtre avec stream()
//elle doit afficher CD en sortie
arraylist.stream()
.filter(s->s.contains("CD"))
.forEach(System.out::println);
Références:
Javadoc: Java 8 - forEach