Les Stream en java

L’API Stream est introduite dans Java 8, et est utilisée pour traiter des collections d’objets. Un flux(stream) est une séquence d’objets qui prend en charge diverses méthodes qui peuvent être enchaînées pour produire le résultat souhaité.
 
 
Les fonctionnalités du Stream en Java sont les suivantes:

  • Stream prend une collection, un tableau ou des E/S.
  • Les Stream ne modifient pas la structure de données d’origine, ils fournissent uniquement le résultat selon les méthodes enchaînées.
  • Chaque opération intermédiaire est exécutée et renvoie un stream en conséquence, de sorte que diverses opérations intermédiaires peuvent être enchaînées. Les opérations terminales marquent la fin du flux(stream) et renvoient le résultat.

 
Voici les différentes opérations sur les streams.
 

Les opérations intermédiaires

map()
La méthode map() est utilisée pour renvoyer un flux constitué des résultats de l’application d’une fonction donnée aux éléments de ce flux. L’exemple suivant incrémente et affiche les éléments de la liste.

import java.util.*; 

public class Main
{
    public static void main(String[] args)
    {  
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); 
        list.stream().map(x -> x + 1).forEach(System.out::println);
    }
}

 
Sortie:

2
3
4
5
6

 
 
filter()
La méthode filter est utilisée pour sélectionner les éléments selon le prédicat passé en argument. L’exemple suivant utilise la méthode filter() pour obtenir un flux composé des nombres pairs.

import java.util.*; 

public class Main
{
    public static void main(String[] args)
    {  
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); 
        list.stream().filter(num -> num%2 == 0 ).forEach(System.out::println);
    }
}

 
Sortie:

2
4

 
sorted()
La méthode sorted est utilisée pour trier un flux.

import java.util.*;

public class Main
{
    public static void main(String[] args)
    {  
        List<Integer> list = Arrays.asList(6, 2, 9, 1, 7);   
        list.stream().sorted().forEach(System.out::println); 
    }
}

 
Sortie:

1
2
6
7
9

 

Les opérations terminales

collect()
La méthode collect est utilisée pour renvoyer le résultat des opérations intermédiaires effectuées sur le flux.

import java.util.*;
import java.util.stream.*; 

public class Main
{
    public static void main(String[] args)
    { 
        List<Integer> nbr = Arrays.asList(1, 2, 3, 4, 5);

        List<Integer> pair = nbr.stream()
                                .filter(x -> x % 2 == 0)
                                .collect(Collectors.toList());

        System.out.println(pair);
    }
}

 
Sortie:

[2, 4]

 
 
forEach()
La méthode forEach est utilisée pour parcourir chaque élément du flux.
 
reduce()
La méthode reduce est utilisée pour réduire les éléments d’un flux à une seule valeur. La méthode reduce prend un BinaryOperator comme paramètre.

import java.util.*; 

public class Main
{
    public static void main(String[] args)
    {  
  		int[] nbr = {1, 2, 3};
  		int somme = Arrays.stream(nbr).reduce(0, (a, b) -> a + b);
  		System.out.println(somme);
    }
}

 
Sortie:

6
QCM-Java

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *