Sobes.tech
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());

Без крайна операция потокът няма да се изпълни.