Way*_*eio 5 java reduce mapreduce java-8
我一直在阅读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));
Run Code Online (Sandbox Code Playgroud)
但是,我看不出带有reduce的mapToInt的优势。
System.out.println(Arrays.stream(strarr).mapToInt(s -> s.length()).reduce(0, (s1, s2) -> s1 + s2));
Run Code Online (Sandbox Code Playgroud)
两者都给出正确的答案12,并且似乎并行工作良好。
一个比另一个好吗?如果是,为什么?
一个比另一个好吗?如果是,为什么?
采用第一种reduce方法时,会有很高的拳击成本。
该mapToInt.reduce(...)方法避免了这种情况。
因此,这个想法是,如果您对求和感兴趣,average等人会使用原始流特化,因为它们的效率更高。
顺便说一句,代码:
Arrays.stream(strarr).mapToInt(s -> s.length()).reduce(0, (s1, s2) -> s1 + s2)
Run Code Online (Sandbox Code Playgroud)
可以简化为:
Arrays.stream(strarr).mapToInt(s -> s.length()).sum();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
227 次 |
| 最近记录: |