4
为什么在Java 8中转换类型的reduce方法需要组合器
我无法完全理解combinerStreams 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的,因为它只是将两个int加在一起。 谁能阐明这一点?
141
java
java-8
java-stream