Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用不同类型的stream reduce?_Java_Functional Programming_Java Stream_Reduce - Fatal编程技术网

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
是否相关(如果不相关,则必须映射到某个地方)?