Introducere în Streams

Input/Output și Fluxuri în Java

Alex Liu

Software Development Engineer

Lucrul cu Streams

  • Java Streams

    • Procesează colecții de date funcțional și îmbunătățește performanța pentru date mari
    • Colecții suportate:
      • Liste (ex. ArrayList, LinkedList)
      • Seturi (ex. HashSet, TreeSet)
      • Hărți (Keys/Values ca Streams) (ex. HashMap, TreeMap)
      • Tablouri (prin Arrays.stream())
  • Exemplu ArrayList denumit names folosit în restul videoclipului

    names: ["Alice", "Bob", "Charlie", "David"]
    
Input/Output și Fluxuri în Java

Utilizarea expresiilor lambda cu Stream

  • Expresii Lambda
    • Sintaxă: (parameters) -> { expression }
names.forEach(
    // `name` is a parameter representing each element in the list
    name -> 
        // This is the expression executed for each element.
        System.out.println(name));
Alice 
Bob 
Charlie 
David
Input/Output și Fluxuri în Java

Crearea unui Stream

  • Convertiți colecția de date în Stream

    • Utilizați .stream() pe o colecție
    • Suportă List, Set și Queue
  • Importați clasa Stream

    import java.util.stream.Stream;
    
  • Lista names convertită în stream; utilizați .foreach() pentru a accesa fiecare element.
    Stream<String> stream = names.stream();
    stream.forEach(name -> System.out.println(name));
    
Input/Output și Fluxuri în Java

Filtrarea datelor cu Streams

  • Utilizați .filter() pentru a selecta elemente
    • Păstrează doar elementele corespunzătoare
  • Lista names convertită în stream
    Stream<String> stream = names.stream();
    
  • Utilizați .filter() pentru elementele care încep cu A și .forEach() pentru a le afișa
    stream
      .filter(name -> name.startsWith("A"))
      .forEach(name -> System.out.println(name));
    
  • Rezultatul filtrării: Alice
Input/Output și Fluxuri în Java

Numărarea elementelor cu Streams

  • Utilizați .count() pentru a număra elementele

    • Returnează valoarea în format long
  • Lista names convertită în stream

    Stream<String> stream = names.stream();
    
  • Utilizați .filter() pentru elementele care încep cu B și .count() pentru a le număra

    long count = names.stream()
      .filter(name -> name.startsWith("B"))
      .count();
    
  • Rezultatul numărării: 1 (doar elementul Bob începe cu B)

Input/Output și Fluxuri în Java

Când să folosiți Streams

  • Când să folosiți Streams:
    • Pentru seturi mari de date: Reduce suprasarcina de performanță
    • Pentru operații funcționale: Mai lizibil decât buclele
    • Pentru filtrare și transformări: Simplifică codul
  • Când să NU folosiți Streams:
    • Pentru modificarea colecțiilor originale
    • Pentru bucle simple cu efecte secundare
Input/Output și Fluxuri în Java

Să exersăm!

Input/Output și Fluxuri în Java

Preparing Video For Download...