Sobes.tech
Junior — Middle

Aké správanie sa prejavuje v API Stream, ak chýba volanie koncovej operácie?

sobes.tech AI

Odpoveď od AI

V Java Stream API operácie sú rozdelené na medzi a konečné. Medzi operácie (napríklad filter, map) sú lenivé a nevykonávajú sa, kým sa nevolá konečná operácia (napríklad collect, forEach).

Ak sa nevolá konečná operácia, tok nebude spracovaný a žiadne výpočty sa neuskutočnia. To znamená, že reťazec medzi operáciami len vytvorí popis toku, ale ho nevykoná.

Príklad:

Stream.of(1, 2, 3, 4)
    .filter(n -> n % 2 == 0)
    .map(n -> n * 2);
// Žiadny prvok nebude spracovaný, pretože chýba konečná operácia

Na spustenie spracovania je potrebné volať konečnú operáciu:

List<Integer> result = Stream.of(1, 2, 3, 4)
    .filter(n -> n % 2 == 0)
    .map(n -> n * 2)
    .collect(Collectors.toList());

Bez konečnej operácie sa tok nespustí.