美文网首页
34、Lambda(二)

34、Lambda(二)

作者: 爱学习的代代 | 来源:发表于2021-05-18 09:10 被阅读0次

    1、lambda的奥义是使用lambda一个接着一个处理,不要停,一路处理下去直到业务结束。常用的函数有:

    • filter: 对集合内的元素做过滤,过滤后个数<= 原有的集合个数
    • map: 对集合内的元素做一对一的转换,集合内的元素个数不变
    • reduce:对集合内的元素做聚合操作,比如求和,字符串拼接等
    • collect: 生成一个新的集合

    2、好处:lambda结构对计算优化是友好的,且这种方式会产生一种美。
    3、使用collector让数据重新生成一个list;

    这个stream的流式编程也有另外的一个名字叫函数式编程。之前学习的swift语言也有该功能,好神奇。

    package day19;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.stream.Collectors;
    
    
    public class UseStreamAppMain {
    
        public static void main(String[] args) {
            List<String> myList = addElementToList(new ArrayList<>());
            System.out.println("-----lambda的奥义-------");
    //      lambda的奥义是使用lambda一个接着一个处理,不要停,一路处理下去直到业务结束。
    //      好处:lambda结构对计算优化是友好的,且这种方式会产生一种美。
    
            myList.stream().filter(s -> s.length() >= 4).map(String::toUpperCase).forEach(System.out::println);
    
    //      当然也可以使用collector让数据重新生成一个list;
            System.out.println("使用lambda重新生成一个list--");
            List<String> longgerStrList = myList.stream().filter(s -> s.length() > 4).map(String::toUpperCase).collect(Collectors.toList());
    
            longgerStrList.forEach(System.out::println);
    
    
    //       reduce 对集合做聚合操作
            System.out.println("-------reduce 做聚合操作-------");
            List<Integer> intList = new ArrayList<>();
            intList.add(1);
            intList.add(2);
            intList.add(3);
            intList.add(4);
    
            int result = intList.stream().reduce(0, (m, n) -> m + n);
            System.out.println(result);
    
    
        }
    
        public static List<String> addElementToList(List<String> list) {
            for(int i = 0; i < 10; i++) {
                if (i % 5 == 0) {
                    list.add("str" + "0" + i);
                }
                list.add("str" + (i % 5));
            }
    
            return list;
        }
    
    
    }
    
    

    输出结果:


    image.png

    相关文章

      网友评论

          本文标题:34、Lambda(二)

          本文链接:https://www.haomeiwen.com/subject/phkejltx.html