Когда использовать `Gatherers.fold` над` Stream#Reduce`?JAVA

Программисты JAVA общаются здесь
Anonymous
Когда использовать `Gatherers.fold` над` Stream#Reduce`?

Сообщение Anonymous »

prelude < /h3>
java 24 представил собрания потока в качестве полноценной функции. < /p>
Эти сборщики позволяют пользователю объявлять пользовательские промежуточные операции на потоках; Кроме того, стандартная библиотека предоставляет несколько реализаций в java.util.stream.gatherers .
Существует статический метод фабрики под названием Gatterers.fold , который создает сборщика, который выполняет последовательный, возможно, изменяющий типовую операцию. Его комментарий DOC гласит следующее: < /p>

Возвращает сборщика, который выполняет упорядоченный, Сокращение, похожее на < /i>, преобразование для сценариев, где не может быть реализована комбинация комбинации, или для сокращения, что является внутриобразным порядок. «Нативные» объявления о сокращении -method в потоке : Вопрос
Когда следует использовать новый склад -gatherer через классический уменьшение -method? Используется: < /p>

Возвращает сборщика, который выполняет упорядоченный, [...] Преобразование [...] для сокращений, которые по сути зависимым от порядка. < /p>
< /blockquote>
, но снижение на потоке последовательности уже упорядочено: < /p>
void main() {
var res = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
.reduce(0, (a, b) -> {
System.out.println(b);
return a + b;
});
System.out.println(res);
}
< /code>
Выход: 1 2 3 4 5 6 7 8 9 10 55 < /p>


Возвращает собиратель, который выполняет [a], преобразование для сценариев, где нет функции комбинации [...] < /p>
< /blockquote> Уменьшите внедрение уже пропустить функцию комбинезона.
В качестве ответа Луи Вассермана правильно упомянуто: в двух случаях, когда не предоставляется метод комбинации, уменьшайте accumulator в качестве комбината. Хотите выполнить упорядоченное сокращение в параллельном потоке. Но когда вы это сделаете? Разве это не побеждает цель параллельной?

Подробнее здесь: https://stackoverflow.com/questions/797 ... reamreduce

Вернуться в «JAVA»