Introduzione agli Stream

Input/Output e Stream in Java

Alex Liu

Software Development Engineer

Lavorare con gli Stream

  • Java Streams

    • Elaborano collezioni in modo funzionale e migliorano le prestazioni con grandi dati
    • Collezioni supportate:
      • Liste (es. ArrayList, LinkedList)
      • Set (es. HashSet, TreeSet)
      • Map (chiavi/valori come Stream) (es. HashMap, TreeMap)
      • Array (con Arrays.stream())
  • Esempio di ArrayList chiamata names usata nel resto del video

    names: ["Alice", "Bob", "Charlie", "David"]
    
Input/Output e Stream in Java

Usare le lambda con Stream

  • Espressioni lambda
    • Sintassi: (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 e Stream in Java

Creare uno Stream

  • Convertire una collezione in Stream

    • Usa .stream() sulla collezione
    • Supporta List, Set e Queue
  • Importare la classe Stream

    import java.util.stream.Stream;
    
  • Converti la lista names in stream e usa .foreach() per accedere a ogni elemento.
    Stream<String> stream = names.stream();
    stream.forEach(name -> System.out.println(name));
    
Input/Output e Stream in Java

Filtrare dati con gli Stream

  • Usa .filter() per selezionare elementi
    • Mantiene solo gli elementi corrispondenti
  • Converte la lista names in stream
    Stream<String> stream = names.stream();
    
  • Usa .filter() per elementi che iniziano con A e .forEach() per stamparli
    stream
      .filter(name -> name.startsWith("A"))
      .forEach(name -> System.out.println(name));
    
  • Risultato del filtro: Alice
Input/Output e Stream in Java

Contare elementi con gli Stream

  • Usa .count() per contare gli elementi

    • Restituisce un long
  • Converte la lista names in stream

    Stream<String> stream = names.stream();
    
  • Usa .filter() per elementi che iniziano con B e .count() per contarli

    long count = names.stream()
      .filter(name -> name.startsWith("B"))
      .count();
    
  • Conteggio: 1 (solo Bob inizia con B)

Input/Output e Stream in Java

Quando usare gli Stream

  • Quando usare gli Stream:
    • Dati grandi: riducono l’overhead
    • Operazioni funzionali: più leggibili dei loop
    • Filtri e trasformazioni: codice più semplice
  • Quando NON usare gli Stream:
    • Per modificare le collezioni originali
    • Per loop semplici con effetti collaterali
Input/Output e Stream in Java

Passiamo alla pratica !

Input/Output e Stream in Java

Preparing Video For Download...