Junior — Middle
Ce comportament se manifestă în API-ul Stream dacă lipsește o operație finală?
sobes.tech AI
Răspuns de la AI
În API-ul Stream din Java, operațiile sunt împărțite în intermediare și finale. Operațiile intermediare (de exemplu, filter, map) sunt leneșe și nu se execută până când nu este apelată o operație finală (de exemplu, collect, forEach).
Dacă nu se apelează o operație finală, fluxul nu va fi procesat și nu vor avea loc calcule. Aceasta înseamnă că lanțul de operații intermediare va crea doar o descriere a fluxului, dar nu îl va executa.
Exemplu:
Stream.of(1, 2, 3, 4)
.filter(n -> n % 2 == 0)
.map(n -> n * 2);
// Niciun element nu va fi procesat, deoarece nu există o operație finală
Pentru a începe procesarea, trebuie apelată o operație finală:
List<Integer> result = Stream.of(1, 2, 3, 4)
.filter(n -> n % 2 == 0)
.map(n -> n * 2)
.collect(Collectors.toList());
Fără o operație finală, fluxul nu se execută.