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) -> { 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 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表达式)