如何使用不同类型的流减少?
How to use stream reduce with different types?
我有一个类型为 One
的值流,我想将它们缩减为一个类型为 Sum
的值。 (它不是整数,只是举例)。
而且,我有一个 BiFunction
求和器 returns Sum
(Sum sum = transformer.apply(sum, one)
有一些逻辑)。
并且初始值为 Sum
(Sum.INITIAL
).
试图做类似的事情:
source.stream().reduce(Sum.INITIAL, (Sum sum, One one) -> transformer.apply(sum, one));
其中 source
- One
的列表。
并且有 "Bad return type in lambda expression: Sum cannot be converted to One"
.
您需要组合函数作为第三个参数。
source.stream().reduce(Sum.INITIAL,
(Sum sum, One one) -> transformer.apply(sum, one),
(Sum s1, Sum s2) -> {/*combine, e.g. return s1.add(s2)*/});
我有一个类型为 One
的值流,我想将它们缩减为一个类型为 Sum
的值。 (它不是整数,只是举例)。
而且,我有一个 BiFunction
求和器 returns Sum
(Sum sum = transformer.apply(sum, one)
有一些逻辑)。
并且初始值为 Sum
(Sum.INITIAL
).
试图做类似的事情:
source.stream().reduce(Sum.INITIAL, (Sum sum, One one) -> transformer.apply(sum, one));
其中 source
- One
的列表。
并且有 "Bad return type in lambda expression: Sum cannot be converted to One"
.
您需要组合函数作为第三个参数。
source.stream().reduce(Sum.INITIAL,
(Sum sum, One one) -> transformer.apply(sum, one),
(Sum s1, Sum s2) -> {/*combine, e.g. return s1.add(s2)*/});