Sobes.tech
Junior — Middle

Puteți explica ce înseamnă termenul 'operație non-terminală' atunci când lucrați cu fluxuri de date în API-ul Stream?

sobes.tech AI

Răspuns de la AI

În API-ul Stream Java, operațiile sunt împărțite în operații terminale și non-terminale (intermediare).

O operație non-terminală este o operație care returnează un nou flux (Stream) și nu pornește procesarea datelor imediat. Servește pentru construirea unui lanț de transformări, de exemplu, filtrare, mapare, sortare.

Exemple de operații non-terminale:

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

Aceste operații sunt leneșe: nu se execută până când nu este apelată o operație terminală, de exemplu, forEach(), collect(), count().

Exemplu:

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

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

Astfel, operațiile non-terminale permit construirea unui lanț de transformări, iar operația terminală pornește execuția.