Sobes.tech
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.