Lambda表达式学习

作者: Kiss石头君 | 来源:发表于2018-03-26 18:02 被阅读28次

    11. lambda表达式

    • lambda表达式本质上是一组匿名方法比如
    public int add(int x, int y) {
        return x + y;
    }
    //可以表示为
    (int x, int y) -> x + y;
    //或(虚拟机可以推断出类型)
    (x, y) -> x + y
    //或
    (x, y) -> { return x + y; }
    
    • obviously,lambda表达式由三部分组成:参数列表、箭头、一个表达式。
    • 当这个方法没有参数也没有返回值的时候,可以表示成
    //例如Runnable的run方法实现
    new Thread(()->{System.out.println("hello");}).start();
    //如果只有一个参数,虚拟机可以推断出类型
    c->{return c.length();}
    
    • 要接收lambda表达式结果,必须经过显示转换,例如
    //报错!!!
    Object obj = () -> {System.out.println("hi");}; 
    //编译通过
    Object o = (Runnable) () -> {System.out.println("hi"); }; 
    
    • lambda表达式的批处理操作,例如
    // 外部迭代
    for(Object o: list) { 
        System.out.println(o);
    }
    //改为forEach函数实现内部迭代
    list.forEach(o -> {System.out.println(o);}); 
    
    • 使用Stream类进行流处理:第一步,创建Stream。第二步,转换Stream。第三步,聚合Stream。
    List<String> list = new ArrayList<>();
    list.add("1");
    list.add("12");
    list.add("123");
    list.stream()//创建一个流
    .filter(e->e.length()==3)//转换,过滤出条件为true的元素
    .forEach(e->System.out.println(e));//聚合,对过滤后的流进行内部迭代
    //结果为123
    

    相关文章

      网友评论

        本文标题:Lambda表达式学习

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