当前位置: 首页 > 知识库问答 >
问题:

为什么累加器在Stream::reduce中是一个双函数,而不是像组合器那样是一个二进制运算符?

祁刚毅
2023-03-14

为什么stream::reduce方法中的accumulator参数是bifunction而不是像combiner参数那样的binaryoperator

为什么它的类型bifunction ?为什么是t?应该是bifunction

共有1个答案

堵琨
2023-03-14
<U> U reduce(U identity,
             BiFunction<U, ? super T, U> accumulator,
             BinaryOperator<U> combiner);

累加器是一个函数,它将stream的元素(其类型由t表示)添加到reduce操作的中间结果(其类型由u表示),并返回更新的结果(也是u)。

因此,您不能将它定义为binaryoperator,其中操作数和结果都是相同类型的。

例如,您可以在reduce调用中作为累加器传递双函数 ,该函数应用于并生成所有元素的长度之和。不能为此使用BinaryOperator BinaryOperator

另一方面,组合器接受两个中间结果(都是相同类型的u),并将它们合并成一个类型也是u的结果。因此,可以使用binaryoperator(它扩展了bifunction )。

 类似资料: