Java Stream API: Разница между reduction и mutable reduction

116
25 февраля 2021, 14:10

Объясните пожалуйста разницу между reduction и mutable reduction. В документации Oracle описано, метод класса Stream reduce() это reduction, метод collect() -это mutable reduction.

int sum = numbers.stream().reduce(0, Integer::sum)

Здесь понятно, что из множества значений получают одно - сумму. Т.е "сократили".

Не понятно, в чём заключается reduction в случае с collect(). Я воспринимаю метод collect() просто как способ конвертации потока в коллекцию. Г.Шилдт в русской редации Полного руководства Java8 даёт определение потока "как последовательность объектов.В самом потоке данные не хранятся, а только перемещаются". Т.е попросту поток "разложили по полочкам" внутри коллекции. Было 5 эл-ов в потоке, стало 5 эл-ов в колекции. Образно говоря: Есть источник данных - файл, исходная коллекция, массив. Это бочка с водой. Присоединён шланг - это поток. Из шланга вода разливается по бутылкам - коллекция.

Answer 1

Обе эти терминальные операции reduce() и collect() преобразуют значения в стриме в результирующий объект, только в случае случае с reduce() обычно получается иммутабельный объект, а в случае с collect() - потенциально мутабельный

——

Достаточно неплохо об этом написано в javadoc

READ ALSO
Как обрезать половину слова

Как обрезать половину слова

помогите пожалуйста мне нужно обрезать половину строки в javascript, но я не знаю самого слова, что мне делать?

119
Подключение скрипта в head-е

Подключение скрипта в head-е

Изучаю jQuery как и js не долго, хотелось бы узнать, чтобы скрипт в шапке работал (и чтобы его не перемещать куда то в footer, допустим)нужно использовать

105
Как сделать прокрутку фотографий

Как сделать прокрутку фотографий

Возник вопрос с прокруткой фотографий на сайтеЯ имею виду, чтобы на сайте фотографии прокручивались автоматически

116
freecodecamp вопрос

freecodecamp вопрос

Задача заключается в том что бы вывести самое большое число из массива массива,и запихнуть в отдельный массивУ меня получилось так

108