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.