Cum se diferențiază operațiile terminale și cele non-terminale în API-ul Stream în ceea ce privește funcțiile și scopul lor?
sobes.tech AI
Răspuns de la AI
În API-ul Stream, operațiile terminale și non-terminale diferă în scop și comportament:
-
Operații non-terminale (intermediate) — sunt operații care returnează un nou stream și permit construirea unui lanț de transformări. Sunt leneșe, adică nu se execută imediat, ci doar atunci când se apelează o operație terminală. Exemple:
filter(),map(),sorted(),distinct(). -
Operații terminale (terminal) — încheie lanțul de operații și pornesc procesarea datelor. Returnează rezultatul (de exemplu, o colecție, un număr, void). După o operație terminală, stream-ul este considerat închis și nu poate fi reutilizat. Exemple:
collect(),forEach(),reduce(),count().
Exemplu:
List<String> result = list.stream()
.filter(s -> s.startsWith("A")) // non-terminal
.map(String::toUpperCase) // non-terminal
.collect(Collectors.toList()); // terminal
Aici, filtrarea și transformarea nu se execută imediat, ci doar când se apelează collect(), care inițiază procesarea și returnează lista finală.