Java8|Java8 map****和****reduce
Java8 map****和****reduce
map
final List numbers = Arrays.asList(1, 2, 3, 4);
final List doubleNumbers = numbers.stream().map(number -> number * 2).collect(Collectors.toList());
结果:[2, 4, 6, 8]
也可以搞成其他的类型,初始List是Integer,也可以变成String
final List numbers = Arrays.asList(1, 2, 3, 4);
final List numberIndex = numbers.stream().map(number -> "#" + number).collect(Collectors.toList());
【Java8|Java8 map****和****reduce】结果:[#1, #2, #3, #4]
reduce
1.不提供初始值的reduce,返回值是Optional,表示可能为空,使用orElseGet可以返回一个null时的默认值
final List numbers = Arrays.asList(1, 2, 3, 4);
final Optional sum = numbers.stream() .reduce((a, b) -> a + b);
sum.orElseGet(() -> 0);
结果:10
这里的(a, b) -> a + b的类型其实是BinaryOperator,它接受两个类型相同的参数
当把numbers改为Arrays.asList()时,结果为0。
2.使用初始值的reduce,因为提供了初始值,所以返回值不再是Optional
final List numbers = Arrays.asList(1, 2, 3, 4);
final Integer sum = numbers.stream() .reduce(0, (a, b) -> a + b);
结果:10
推荐阅读
- 急于表达——往往欲速则不达
- 第三节|第三节 快乐和幸福(12)
- 20170612时间和注意力开销记录
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 对称加密和非对称加密的区别
- 眼光要放高远
- 樱花雨
- 前任
- 2020-04-07vue中Axios的封装和API接口的管理
- 烦恼和幸福