Sobes.tech
Junior — Middle

Ako sa líšia terminálne a neterminálne operácie v API Stream z hľadiska funkcií a účelu?

sobes.tech AI

Odpoveď od AI

V API Stream sa terminálnymi a neterminálnymi operáciami sa líšia podľa účelu a správania:

  • Ne terminálne operácie (intermediate) — sú operácie, ktoré vracajú nový stream a umožňujú vytvárať reťazec transformácií. Sú lenivé, teda sa nevykonávajú okamžite, ale iba pri volaní terminálnej operácie. Príklady: filter(), map(), sorted(), distinct().

  • Terminálne operácie (terminal) — ukončujú reťazec operácií a spúšťajú spracovanie dát. Vracajú výsledok (napríklad kolekciu, číslo, void). Po terminálnej operácii sa stream považuje za zatvorený a nie je možné ho použiť opakovane. Príklady: collect(), forEach(), reduce(), count().

Príklad:

List<String> result = list.stream()
    .filter(s -> s.startsWith("A"))   // ne terminál
    .map(String::toUpperCase)           // ne terminál
    .collect(Collectors.toList());     // terminál

Tu sa filtrovanie a transformácia nevykonávajú okamžite, ale iba pri volaní collect(), ktoré spúšťa spracovanie a vracia konečný zoznam.