Sobes.tech
Junior — Middle

Ar duomenų srautas bus vykdomas be galutinės operacijos paleidimo?

sobes.tech AI

Atsakymas iš AI

Java kalba duomenų srautas (stream) nebus vykdomas be galutinės operacijos (terminal operation) iškvietimo. Java srautai yra tingūs: tarpinės operacijos (pvz., map, filter) tik apibūdina transformacijas, bet nedelsiant nevykdomos.

Pavyzdys:

Stream<Integer> stream = Stream.of(1, 2, 3, 4)
    .filter(x -> x % 2 == 0)
    .map(x -> x * x);
// Čia nieko nevyksta, nes nėra galutinės operacijos

List<Integer> result = stream.collect(Collectors.toList()); // Galutinė operacija, pradeda skaičiavimus

Be galutinės operacijos (collect, forEach, reduce ir kt.) srautas nebus apdorotas ir skaičiavimai neįvyks.