java - Java Stream 为什么reduce需要函数式接口的两个参数?
问题描述
换句话说,为什么reduce需要BinaryOperator,或者BiFunction接口?为什么不使用 UnaryOperator 或 Function 接口呢?
将两个参数作为功能接口的输入有什么意义?(我知道这是为了积累,但为什么一个参数不够?)
解决方案
您将如何计算取决于所有Stream
元素的单个值 a UnaryOperator
?
您可以将 应用于 的UnaryOperator
第一个元素Stream
。
然后您可以将 应用到UnaryOperator
的第二个元素上Stream
。
但是你不能将这两个结果结合起来。
ABinaryOperator
可以应用于 的第一个和第二个元素Stream
。
然后你可以将它应用于中间结果(前两个元素的)和 的第三个元素Stream
,以获得依赖于前 3 个元素的中间结果,依此类推......直到你得到一个依赖于的结果所有元素。
推荐阅读
- python - 使用索引的字典理解
- c# - 获取日期时间 c# 的 12 小时格式问题
- leaflet - 安装插件离子
- bash - 仅使用 tee 和 ts 将时间戳添加到日志文件
- grafana - Grafana 有没有办法在现有数据源(InfluxDB)中手动输入数据?
- django - Nginx 目录禁止 403 django
- javascript - 将 iframe 的内容嵌入到另一个 iframe
- python - 如何使用 mysql.connector 包将 python 哈希值添加到数据库
- javascript - 我如何在javascript中检查“-infinity”
- python - 如何通过语法和数字序列对带有数字的字符串列表进行排序?