首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java mapToInt与使用map的Reduce

Java mapToInt与使用map的Reduce
EN

Stack Overflow用户
提问于 2018-10-19 21:59:26
回答 1查看 741关注 0票数 5

我一直在阅读reduce,刚刚发现有一个3参数版本可以像这样执行map reduce:

String[] strarr = {"abc", "defg", "vwxyz"};

System.out.println(Arrays.stream(strarr).reduce(0, (l, s) -> l + s.length(), (s1, s2) -> s1 + s2));

然而,我看不出这比带有reduce的mapToInt有什么优势。

System.out.println(Arrays.stream(strarr).mapToInt(s -> s.length()).reduce(0, (s1, s2) -> s1 + s2));

两者都产生12的正确答案,而且两者似乎都很好地并行工作。

一种比另一种更好吗?如果是,为什么?

EN

回答 1

Stack Overflow用户

发布于 2018-10-19 22:19:24

有三个参数的Stream.reduce更加灵活:

<U> U reduce(U identity,
             BiFunction<U, ? super T, U> accumulator,
             BinaryOperator<U> combiner);

与只接受和返回int值的双参数IntStream.reduce相比:

int reduce(int identity, IntBinaryOperator op);

而三参数版本中的accumulator可以接受两种不同类型的参数:

BiFunction<Integer, String, Integer> acc = (i, str) -> i + str.length();

这允许您省略额外的map操作:

Arrays.stream(strs).reduce(0, (i, str) -> i + str.length(), Integer::sum)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52893900

复制
相关文章

相似问题

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