以下是Oracle Java13文档:
https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/util/stream/stream.html#reduce(U,java.util.function.bifunction,java.util.function.binaryoperator)
首先,我知道操作符的关联性意味着(a op b)op c==a op(b op c)。维基百科说关联属性是一些二进制运算的属性。二进制运算表示F:S×SS。
我的问题是:如果累加器函数的域不是S x S而是S x t,
int length = asList("str1", "str2").stream()
.reduce(0, (accumulatedInt, str ) -> accumulatedInt + str.length(),
(accumulatedInt, accumulatedInt2) -> accumulatedInt + accumulatedInt2);
在本例中,累加器是(accumulatedInt,str)->accumulatedInt+str.lengts()
,它不是关联的。它需要两种不同类型的参数。怎么可能是(a op b)op c==a op b op c)。java文档中的“累加器必须是关联的”是什么意思?
在此reduce
方法的情况下,累加器
的关联可以用累加器
和组合器
函数来表示(除了标识
值之外)。
例如,假设您的stream
有元素t1、t2和t3。
您可以将t1和t2添加到中间结果中,然后将t3添加到该结果中-这将相当于(t1 opt2)opt3
。
或者您可以将t2和t3添加到中间结果中,然后将t1添加到该结果中-这将相当于t1 op(t2 opt3)
。
关联性是指在这两种情况下,最终的结果必须是相同的。
要编写这是累加器和组合器函数的术语,它将如下所示(我不编写显式方法调用,因为在我看来,这将不具有可读性):
((identity <accumulator> t1) <accumulator> t2) <accumulator> t3 ==
(identity <accumulator> t1) <combiner> ((identity <accumulator> t2) <accumulator> t3)
本文向大家介绍C#中累加器函数Aggregate用法实例,包括了C#中累加器函数Aggregate用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#中累加器函数Aggregate用法。分享给大家供大家参考。具体如下: 希望本文所述对大家的C#程序设计有所帮助。
import { Count } from 'feui'; components: { [Count.name]: Count } 代码演示 基础用法 <fe-group title="默认"> <fe-count name="数量" title="数量"></fe-count> </fe-group> 高级用法 <fe-group title="监听 on-change
在Java 8中,Stream有一个方法reduce: 累加器运算符是否允许修改其任一参数?我不这么认为,因为JavaDoc说累加器应该是非干涉的,尽管所有示例都谈到修改集合,而不是修改集合的元素。 举个具体的例子,如果我们有 假设整数是可变的,那么可以通过将第二个参数的值添加到第一个参数中(就地)来修改第一个参数吗? 我想不会,但我也想举一个例子,说明这种干扰在哪里会引起问题。
主要内容:1 LongAccumulator的原理,1.1 LongAccumulator的概述,2 LongAccumulator的案例,3 LongAccumulator的总结基于JDK1.8详细介绍了JUC下面的LongAccumulator原子类源码和原理,LongAccumulator是Java8对于原子类的增强。 1 LongAccumulator的原理 1.1 LongAccumulator的概述 public class LongAccumulator extends Numbe
我在1.1GB文件上运行Hadoop MapReduce多次,使用不同数量的映射器和化简器(例如,1个映射器和1个化简器,1个映射器和2个化简器,1个映射器和4个化简器,...) Hadoop安装在具有超线程的四核机器上。 以下是按最短执行时间排序的前 5 个结果: 1 - 8 个化简器和 1 - 8 个映射器的结果:列 = 映射器行数 = 化简器数 (1)当我有8个映射器时,程序运行速度似乎稍快
在实验了2个reducer之后,阅读了Hadoop Wiki中的HowManyMapsAndReduces,Hadoop:reducer的数量保持不变,并且设置了映射任务和reduce任务的数量,我得到的结论是: 如果我有1个map(我知道这个数字实际上是由Hadoop决定的)和2个reducer(实际上我只提供了1个带有reducer代码的文件,例如),那么下面会发生什么? null 我想第一个