zoukankan      html  css  js  c++  java
  • Java8 map和reduce

    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

  • 相关阅读:
    Bash 小问题【待更新】
    进程动态优先级调度
    密码
    [Noi2016]优秀的拆分
    [Tjoi2016&Heoi2016]字符串
    [BZOJ 1901]Dynamic Rankings
    [HDU 2665]Kth number
    [BZOJ 4310]跳蚤
    [Sdoi2008]Sandy的卡片
    [Usaco2007 Dec]队列变换
  • 原文地址:https://www.cnblogs.com/shinn-sjl/p/5781468.html
Copyright © 2011-2022 走看看