Introduction aux Streams

Entrées/Sorties et flux en Java

Alex Liu

Software Development Engineer

Travailler avec les Streams

  • Streams Java

    • Traitent les collections de données de façon fonctionnelle et améliorent les performances sur de gros volumes
    • Collections prises en charge :
      • Listes (p. ex. ArrayList, LinkedList)
      • Ensembles (p. ex. HashSet, TreeSet)
      • Maps (Keys/Values en Streams) (p. ex. HashMap, TreeMap)
      • Tableaux (via Arrays.stream())
  • Exemple d'ArrayList nommée names utilisée pour le reste de la vidéo

    names: ["Alice", "Bob", "Charlie", "David"]
    
Entrées/Sorties et flux en Java

Utiliser des expressions lambda avec Stream

  • Expressions lambda
    • Syntaxe : (parameters) -> { expression }
names.forEach(
    // `name` est un paramètre représentant chaque élément de la liste
    name -> 
        // Expression exécutée pour chaque élément.
        System.out.println(name));
Alice 
Bob 
Charlie 
David
Entrées/Sorties et flux en Java

Créer un Stream

  • Convertir une collection en Stream

    • Utilisez .stream() sur une collection
    • Prend en charge List, Set et Queue
  • Importer la classe Stream

    import java.util.stream.Stream;
    
  • Convertir la liste names en stream et utiliser .foreach() pour accéder à chaque élément
    Stream<String> stream = names.stream();
    stream.forEach(name -> System.out.println(name));
    
Entrées/Sorties et flux en Java

Filtrer des données avec les Streams

  • Utiliser .filter() pour sélectionner des éléments
    • Ne conserve que les éléments correspondants
  • Convertir la liste names en stream
    Stream<String> stream = names.stream();
    
  • Utiliser .filter() pour les éléments commençant par A, puis .forEach() pour les afficher
    stream
      .filter(name -> name.startsWith("A"))
      .forEach(name -> System.out.println(name));
    
  • Résultat du filtre : Alice
Entrées/Sorties et flux en Java

Compter des éléments avec les Streams

  • Utiliser .count() pour compter les éléments

    • Retourne une valeur au format long
  • Convertir la liste names en stream

    Stream<String> stream = names.stream();
    
  • Utiliser .filter() pour les éléments commençant par B, puis .count() pour les compter

    long count = names.stream()
      .filter(name -> name.startsWith("B"))
      .count();
    
  • Résultat du comptage : 1 (seul Bob commence par B)

Entrées/Sorties et flux en Java

Quand utiliser les Streams

  • Quand utiliser les Streams :
    • Gros jeux de données : réduit la surcharge
    • Opérations fonctionnelles : plus lisible que des boucles
    • Filtrage et transformations : code simplifié
  • Quand NE PAS utiliser les Streams :
    • Pour modifier les collections d'origine
    • Pour de simples boucles avec effets de bord
Entrées/Sorties et flux en Java

Passons à la pratique !

Entrées/Sorties et flux en Java

Preparing Video For Download...