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