最佳答案
我很难完全理解combiner
在Streams reduce
方法中实现的角色。
例如,下面的代码不能编译:
int length = asList("str1", "str2").stream()
.reduce(0, (accumulatedInt, str) -> accumulatedInt + str.length());
编译错误:
(参数不匹配; . int不能转换为java.lang.String)
但是这段代码可以编译:
int length = asList("str1", "str2").stream()
.reduce(0, (accumulatedInt, str ) -> accumulatedInt + str.length(),
(accumulatedInt, accumulatedInt2) -> accumulatedInt + accumulatedInt2);
我知道组合器方法是在并行流中使用的-所以在我的例子中,它是将两个中间累积整数相加。
但是我不明白为什么第一个例子没有组合器就不能编译,或者组合器是如何解决字符串到int的转换的,因为它只是将两个int相加。
有人能解释一下吗?