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