首页 > 解决方案 > Java Stream 为什么reduce需要函数式接口的两个参数?

问题描述

换句话说,为什么reduce需要BinaryOperator,或者BiFunction接口?为什么不使用 UnaryOperator 或 Function 接口呢?

将两个参数作为功能接口的输入有什么意义?(我知道这是为了积累,但为什么一个参数不够?)

标签: javaandroidjava-stream

解决方案


您将如何计算取决于所有Stream元素的单个值 a UnaryOperator

您可以将 应用于 的UnaryOperator第一个元素Stream

然后您可以将 应用到UnaryOperator的第二个元素上Stream

但是你不能将这两个结果结合起来。

ABinaryOperator可以应用于 的第一个和第二个元素Stream

然后你可以将它应用于中间结果(前两个元素的)和 的第三个元素Stream,以获得依赖于前 3 个元素的中间结果,依此类推......直到你得到一个依赖于的结果所有元素。


推荐阅读