首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么在java 8中转换类型的reduce方法需要一个组合器?

为什么在java 8中转换类型的reduce方法需要一个组合器?
EN

Stack Overflow用户
提问于 2014-06-19 21:45:12
回答 4查看 53.4K关注 0票数 181

我很难完全理解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);

我知道组合器方法是在并行流中使用的-所以在我的示例中,它将两个中间累加整数相加在一起。

但我不明白为什么第一个示例不能在没有组合器的情况下编译,也不明白组合器是如何解决string到int的转换的,因为它只是将两个int相加在一起。

有人能说明这一点吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24308146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档