71 подписчик

Java: Терминальные и нетерминальыне операции со стримами, почему они ленивые

В Java стримы представляют собой новый функциональный интерфейс, предназначенный для работы с последовательностями элементов. Стримы позволяют выполнять различные операции (такие как фильтрация, отображение, сортировка и другие) над элементами последовательности. Операции над стримами можно разделить на терминальные и нетерминальные.

Терминальные операции:

Терминальные операции - это операции, которые завершают обработку стрима, возвращая результат или выполняя побочные эффекты. После выполнения терминальной операции нельзя продолжить работу с тем же стримом.

Примеры терминальных операций в Java:

1. forEach: Выполняет заданное действие для каждого элемента стрима.

В Java стримы представляют собой новый функциональный интерфейс, предназначенный для работы с последовательностями элементов.

2. collect: Собирает элементы стрима в коллекцию или другую структуру данных.

В Java стримы представляют собой новый функциональный интерфейс, предназначенный для работы с последовательностями элементов.-2

3. reduce: Сводит элементы стрима к единственному значению (например, сумма или максимальное значение).

В Java стримы представляют собой новый функциональный интерфейс, предназначенный для работы с последовательностями элементов.-3

Нетерминальные (ленивые) операции:

Нетерминальные операции - это операции, которые возвращают другой стрим и позволяют создавать цепочки операций. Эти операции не выполняются немедленно, а откладывают свое выполнение до тех пор, пока не будет вызвана терминальная операция.

Примеры нетерминальных операций в Java:

1. filter: Фильтрует элементы стрима в соответствии с заданным условием.

В Java стримы представляют собой новый функциональный интерфейс, предназначенный для работы с последовательностями элементов.-4

2. map: Преобразует каждый элемент стрима в другой объект.

В Java стримы представляют собой новый функциональный интерфейс, предназначенный для работы с последовательностями элементов.-5

3. sorted: Сортирует элементы стрима.

В Java стримы представляют собой новый функциональный интерфейс, предназначенный для работы с последовательностями элементов.-6

Почему операции со стримами называют ленивыми?

Операции со стримами называют ленивыми потому, что они выполняются только тогда, когда требуется получить результат, а не немедленно после вызова. Нетерминальные операции создают цепочку операций, и все они выполняются только при вызове терминальной операции. Это позволяет оптимизировать выполнение операций и избегать лишних вычислений, что особенно важно при работе с большими объемами данных.