Junior — Middle
In quali momenti avviene l'inizializzazione di Stream durante l'uso dell'API Stream?
sobes.tech AI
Risposta dell'AI
L'inizializzazione di uno Stream in Java avviene al momento della chiamata di un'operazione terminale. Fino a quel momento, le operazioni sullo Stream sono lazy e non vengono eseguite.
Cioè, quando crei uno Stream e applichi operazioni intermedie (ad esempio, filter(), map()), queste formano solo una catena di elaborazione, ma non avviano i calcoli.
Esempio:
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream()
.filter(s -> s.startsWith("a"))
.map(String::toUpperCase);
// Qui non succede nulla
List<String> result = stream.collect(Collectors.toList()); // Operazione terminale
// Qui avviene l'elaborazione degli elementi
Pertanto, lo Stream viene inizializzato e inizia a elaborare i dati solo quando viene chiamata un'operazione terminale, come collect(), forEach(), reduce(), ecc.