首页 > 编程语言 > 详细

Java8 map和reduce

时间:2016-08-17 21:02:08      阅读:206      评论:0      收藏:0      [点我收藏+]

map

       

final List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
        final List<Integer> doubleNumbers = numbers.stream()
                .map(number -> number * 2)
                .collect(Collectors.toList());

结果:[2, 4, 6, 8]

 

也可以搞成其他的类型,初始List是Integer,也可以变成String

 final List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
        final List<String> numberIndex = numbers.stream()
                .map(number -> "#" + number)
                .collect(Collectors.toList());

结果:[#1, #2, #3, #4]

 

reduce

 

1.不提供初始值的reduce,返回值是Optional,表示可能为空,使用orElseGet可以返回一个null时的默认值

 final List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
        final Optional<Integer> 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<Integer> numbers = Arrays.asList(1, 2, 3, 4);
        final Integer sum = numbers.stream()
                .reduce(0, (a, b) -> a + b);

结果:10

 

 http://blog.csdn.net/kiwi_coder/article/details/31771475

 http://www.cnblogs.com/shinn-sjl/p/5781468.html

Java8 map和reduce

原文:http://www.cnblogs.com/shinn-sjl/p/5781468.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!