11. 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"); };
// 外部迭代
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
网友评论