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 и др.) потокът няма да бъде обработен и изчисленията няма да се случат.