Junior — Middle
Какво поведение се проявява в Stream API, ако липсва извикване на крайна операция?
sobes.tech AI
Отговор от AI
В Java Stream API операциите се делят на междинни и крайни. Междинните операции (например, filter, map) са лениви и не се изпълняват, докато не бъде извикана крайна операция (например, collect, forEach).
Ако не бъде извикана крайна операция, потокът няма да бъде обработен и няма да се извършат изчисления. Това означава, че веригата от междинни операции просто ще създаде описание на потока, но няма да го изпълни.
Пример:
Stream.of(1, 2, 3, 4)
.filter(n -> n % 2 == 0)
.map(n -> n * 2);
// Никой елемент няма да бъде обработен, тъй като няма крайна операция
За да стартирате обработката, трябва да извикате крайна операция:
List<Integer> result = Stream.of(1, 2, 3, 4)
.filter(n -> n % 2 == 0)
.map(n -> n * 2)
.collect(Collectors.toList());
Без крайна операция потокът няма да се изпълни.