java8中的map 和reduce
map
1、使用map让集合里面的数字翻倍。
List<Integer> numbers = Lists.newArrayList(1,2,3,4,5);
List<Integer> doubleNumbers = numbers.stream()
.map(number -> number * 2)
.collect(Collectors.toList());
doubleNumbers.stream().forEach(r->System.out.println(r));
2、使用map可以对集合的数据进行处理然后返回其他类型的集合数据。如果是一个用户类的集合则可以使用这个方法获取用户姓名的列表。
List<String> collect = doubleNumbers.stream().map(n->”数字:”+n).collect(Collectors.toList());
reduce
3 、不提供初始值的reduce,返回值是Optional,表示可能为空,使用orElseGet可以返回一个null时的默认值
Optional<Integer> sum = numbers.stream().reduce((a, b) -> a + b);
Integer orElseGet = sum.orElseGet(() -> 0);
System.out.println(orElseGet);
结果是15
4.使用初始值的reduce,因为提供了初始值,所以返回值不再是Optional
Integer sum = numbers.stream()
.reduce(0, (a, b) -> a + b);