Streams

Il est extrêmement habituel de travailler sur des ensembles de données quand on code un logiciel. Un exemple caractéristique est de recevoir une liste d’objets, de traverser cette liste et d’effectuer des traitements pour chacun des objets de cette liste.

Cela se traduit habituellement par une boucle for (ou une boucle while) :


List<String> valeurs = Arrays.asList("a", "b", "c", "b1", "c1"); 
for (String valeur: valeurs) { 
    traitement(valeur); 
} 
Iterator<Integer> iterator = valeurs.iterator(); 
while (iterator.hasNext()) { 
    String valeur = iterator.next(); 
    traitement(valeur); 
}
 

traitement(valeur) est l’appel de la méthode où le traitement est effectué.

Depuis la version 8, Java permet de simplifier cette écriture par l’utilisation de streams.

Un stream en Java est une monade. Sans rentrer dans la définition mathématique formelle, il s’agit d’une séquence d’éléments depuis une source, qui permet d’effectuer des opérations de manière chaînée.

Plus concrètement, écrire le code suivant :


valeurs.stream() 
    .filter(val -> val.startsWith("c")) 
    .map(String::toUpperCase) 
    .distinct() 
    .sorted() 
    .limit(2) 
    .forEach(this::process);
 

décrit...

couv_9JAV.png

Découvrez 

le livre :

Aussi inclus dans nos :

Précédent
Lambdas
Suivant
Optional