Sobes.tech
Junior — Middle

Ще изпълнява ли потокът от данни без да стартира крайната операция?

sobes.tech AI

Отговор от AI

В Java потокът от данни (stream) няма да се изпълни без извикване на крайна операция (terminal operation). Потоците в Java са лениви: междинните операции (например, map, filter) описват само преобразувания, но не се изпълняват веднага.

Пример:

Stream<Integer> stream = Stream.of(1, 2, 3, 4)
    .filter(x -> x % 2 == 0)
    .map(x -> x * x);
// Тук нищо не се случва, тъй като няма крайна операция

List<Integer> result = stream.collect(Collectors.toList()); // Крайна операция, стартира изчисленията

Без извикване на крайна операция (collect, forEach, reduce и др.) потокът няма да бъде обработен и изчисленията няма да се случат.