Sobes.tech
Junior — Middle

Bude datový tok prováděn bez spuštění konečné operace?

sobes.tech AI

Odpověď od AI

V Java nebude datový proud (stream) prováděn bez volání konečné operace (terminal operation). Proudy v Java jsou líné: mezilehlé operace (například map, filter) pouze popisují transformace, ale neprovádějí se ihned.

Příklad:

Stream<Integer> stream = Stream.of(1, 2, 3, 4)
    .filter(x -> x % 2 == 0)
    .map(x -> x * x);
// Zde se nic neděje, protože chybí konečná operace

List<Integer> result = stream.collect(Collectors.toList()); // Konečná operace, spouští výpočty

Bez volání konečné operace (collect, forEach, reduce apod.) nebude proud zpracován a výpočty se neuskuteční.