Passiamo dai cicli imperativi alle pipeline dichiarative di elaborazione dei dati con
Stream API: analizziamo operazioni intermedie e terminali, la valutazione lazy, la raccolta dei risultati tramite
toList()/
collect, le operazioni chiave
map,
filter,
sorted,
flatMap,
reduce, nonché i controlli
anyMatch/
allMatch/
noneMatch. Confronteremo stile imperativo e funzionale, vedremo esempi pratici ed errori tipici, incluso l’uso fuori luogo di
forEach per raccogliere collezioni e l’adozione prematura di
parallelStream().