tgoop.com/Java_Iibrary/1770
Last Update:
Ты всё ещё перебираешь списки в Java с помощью for
или forEach
? Потоки позволяют писать короче, чище и читаемее.
Давай разберёмся, как они работают.
Streams в Java дают декларативный способ обработки данных. Вместо того чтобы писать внешние циклы, ты описываешь конвейер операций, который выполняется внутри потока.
Конвейер потока состоит из трёх частей:
I. Источник — начальная точка, обычно это коллекция, массив или I/O-канал.
Пример: numbers.stream()
II. Промежуточные операции — преобразуют поток и возвращают новый поток. Популярные:
• filter → оставляет элементы, удовлетворяющие условию
• map → применяет функцию к каждому элементу
• sorted → сортирует поток
Эти операции ленивые — они не выполняются, пока не вызвана терминальная операция.
III. Терминальная операция — даёт финальный результат или побочный эффект. Примеры:
• collect → собирает элементы в коллекцию
• reduce → сводит элементы к одному значению
• forEach → перебирает элементы и выполняет действие
Потоки могут быть последовательными и параллельными. Последовательные обрабатывают элементы один за другим, а параллельные разбивают работу на несколько потоков. Это мощный инструмент для больших данных, но параллельные потоки стоит использовать осторожно — они добавляют накладные расходы.
К примеру, найти все чётные числа, возвести их в квадрат и собрать в новый список.