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<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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容