Java 如何使用不同类型的stream reduce?
我有一个类型为Java 如何使用不同类型的stream reduce?,java,functional-programming,java-stream,reduce,Java,Functional Programming,Java Stream,Reduce,我有一个类型为One的值流,我想将它们减少为类型为Sum的值。(例如,它不是整数)。 我有一个双功能求和器,它返回Sum(Sum-Sum=transformer.apply(Sum,one),带有一些逻辑)。 初始值为Sum(Sum.initial) 尝试执行以下操作: source.stream().reduce(Sum.INITIAL, (Sum sum, One one) -> transformer.apply(sum, one)); 其中source-一个s的列表。 并且lam
One
的值流,我想将它们减少为类型为Sum
的值。(例如,它不是整数)。
我有一个双功能
求和器,它返回Sum
(Sum-Sum=transformer.apply(Sum,one)
,带有一些逻辑)。
初始值为Sum
(Sum.initial
)
尝试执行以下操作:
source.stream().reduce(Sum.INITIAL, (Sum sum, One one) -> transformer.apply(sum, one));
其中source
-一个s的列表。
并且lambda表达式中的返回类型不正确:Sum不能转换为一“
您需要组合器函数作为第三个参数
source.stream().reduce(Sum.INITIAL,
(Sum sum, One one) -> transformer.apply(sum, one),
(Sum s1, Sum s2) -> {/*combine, e.g. return s1.add(s2)*/});
是的,当然!我需要忘记旧的金额,只买一个新的!非常感谢你。最终解决方案:source.stream().reduce(Sum.INITIAL,transformer,(Sum s1,Sum s2)->s2)@我很乐意帮忙。
变压器是什么类型的?One
和Sum
是否相关(如果不相关,则必须映射到某个地方)?