stream
List<Integer> values = List.of(1, 2, 3);
filter
var even = values.stream()
.filter(v -> v % 2 == 0)
.toList();
map
var squared = values.stream()
.map(v -> v * v)
.toList();
collect
usa collector personalizzati per output complessi.
panoramica
In questo capitolo su stream api, pipeline funzionali per dati puliti e leggibili. L'obiettivo è trasformare i concetti in micro-pattern riutilizzabili con esempi piccoli e verificabili.
Lavora in sequenza: leggi, prova, modifica gli snippet e annota i trade-off principali (performance, leggibilità, manutenzione).
badge: stream pipeline
obiettivi
- capire e applicare stream in uno scenario reale
- capire e applicare filter in uno scenario reale
- capire e applicare map in uno scenario reale
- capire e applicare collect in uno scenario reale
scheda rapida
import java.util.List;
public class Main {
public static void main(String[] args) {
var dati = List.of(1, 2, 3);
var out = dati.stream().map(x -> x * 2).toList();
System.out.println(out);
}
}
Adatta questo scheletro agli esempi della lezione e sostituisci i dati con il tuo dominio.
tips
- organizza package per dominio
- preferisci immutabilità dove possibile
- documenta le API pubbliche
- evita side effect in map
- usa filter prima di map
- attenzione a parallelStream
tip: Se il codice diventa illegibile, torna a un loop: chiarezza > stile.
mini progetto
Pipeline su ordini per calcolare totali.
- carica lista ordini
- filtra per stato
- map a totale
- collect in Map per cliente
output atteso: uno script o query ripetibile con risultati verificabili.
checklist
- ho eseguito gli snippet e controllato l'output
- ho annotato almeno 2 trade-off
- ho completato il mini progetto
- ho salvato un riepilogo personale