Junior
Qual è l'idea principale dell'API Stream in Java?
sobes.tech AI
Risposta dell'AI
L'idea principale dell'API Stream è fornire un modo dichiarativo per elaborare le collezioni di dati. Invece di un approccio imperativo iterativo con gestione esplicita di cicli e stati, gli stream consentono di descrivere cosa fare con i dati (filtraggio, trasformazione, aggregazione), lasciando l'implementazione come farlo all'API.
Concetti chiave:
- Immutabilità: Gli stream non modificano la fonte di dati originale. Le operazioni sugli stream creano nuovi stream o risultati.
- Valutazione pigra: Molte operazioni sugli stream, come
filter()emap(), sono intermedie. Non vengono eseguite finché non viene chiamata un'operazione terminale, comecollect()oforEach(). Questo permette di ottimizzare l'esecuzione. - Pipeline: Le operazioni sugli stream possono essere combinate in una pipeline. Ogni elemento passa attraverso la pipeline in modo sequenziale o parallelo.
- Elaborazione parallela: Gli stream sono progettati per facilitare l'elaborazione parallela dei dati, spesso con minimi cambiamenti nel codice (
parallelStream()).
Vantaggi:
- Codice più leggibile ed espressivo per operazioni complesse con le collezioni.
- Facilità di parallelizzazione.
- Eliminazione del codice boilerplate legato alle iterazioni.
// Esempio: Filtraggio e trasformazione di una lista di stringhe
List<String> nomi = Arrays.asList("Alice", "Bob", "Charlie", "David");
List<Integer> lunghezze = nomi.stream()
.filter(nome -> nome.startsWith("A")) // Operazione intermedia
.map(String::length) // Operazione intermedia
.collect(Collectors.toList()); // Operazione terminale
// lunghezze conterrà [5]