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í.