Sobes.tech
Junior — Middle

Puoi spiegare cosa significa il termine 'operazione non terminale' quando si lavora con i flussi di dati nell'API Stream?

sobes.tech AI

Risposta dell'AI

Nell'API Stream di Java, le operazioni sono suddivise in terminali e non terminali (intermedie).

Un'operazione non terminale è un'operazione che restituisce un nuovo flusso (Stream) e non avvia immediatamente l'elaborazione dei dati. Serve a costruire una catena di trasformazioni, ad esempio, filtraggio, mappatura, ordinamento.

Esempi di operazioni non terminali:

  • filter()
  • map()
  • sorted()
  • distinct()

Queste operazioni sono pigre: non vengono eseguite finché non viene chiamata un'operazione terminale, ad esempio, forEach(), collect(), count().

Esempio:

List<String> list = Arrays.asList("a", "bb", "ccc");

list.stream()
    .filter(s -> s.length() > 1) // non terminale
    .map(String::toUpperCase)    // non terminale
    .forEach(System.out::println); // terminale

In questo modo, le operazioni non terminali consentono di costruire una catena di trasformazioni, mentre quella terminale avvia l'esecuzione.