【发布时间】:2019-03-24 10:28:18
【问题描述】:
我一直在阅读 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 的正确答案,并且两者似乎都可以并行工作。
一个比另一个好,如果是,为什么?
【问题讨论】:
-
您实际上是在问
IntStream和Stream<Integer>之间的区别。检查这个:stackoverflow.com/questions/35209191/…。请记住,IntStream为您提供了已经实现的“减少”:.sum()
标签: java java-8 mapreduce reduce