lambda表达式

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) ->

  • obviously,lambda表达式由三部分组成:参数列表、箭头、一个表达式。

  • 当这个方法没有参数也没有返回值的时候,可以表示成

    //例如Runnable的run方法实现
    new Thread(()->{System.out.println("hello");}).start();
    //如果只有一个参数,虚拟机可以推断出类型
    c->

  • 要接收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 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

posted @ 2018-04-03 15:52  kiss石头君  阅读(160)  评论(0)    收藏  举报