Sobes.tech
Junior — Middle

Bude tok údajov vykonaný bez spustenia konečnej operácie?

sobes.tech AI

Odpoveď od AI

V Java-ju sa tok podatkov (stream) ne bo izveden brez klica na končno operacijo (terminal operation). Tokovi v Java-ju so leni: začasne operacije (npr. map, filter) opisujejo le transformacije, vendar se ne izvajajo takoj.

Primer:

Stream<Integer> stream = Stream.of(1, 2, 3, 4)
    .filter(x -> x % 2 == 0)
    .map(x -> x * x);
// Tukaj se ne zgodi nič, ker ni končne operacije

List<Integer> result = stream.collect(Collectors.toList()); // Končna operacija, začne izračune

Brez klica na končno operacijo (collect, forEach, reduce itd.) tok ne bo obdelan in izračuni se ne bodo zgodili.