码迷,mamicode.com
首页 > 其他好文 > 详细

Lambda表达式

时间:2020-02-11 00:34:20      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:parameter   lis   return   red   final   new   统一   name   each   

Lambda表达式

Lambda 表达式(lambda expression)是一个匿名函数,也可以称为闭包,它允许把函数作为一个方法的参数(函数作为参数传递进方法中),使得代码变得非常简洁。


1. 语法

(parameters) -> expression
 或者
(parameters) ->{ 
 statements;
}
  • 不需要声明参数类型,编译器可以统一识别参数值
  • 如果只有一个参数,可以省略圆括号
  • 如果只有一条语句,无论是否有返回值,都可以省略大括号、分号、return语句(同省略)

注:

  • lambda 表达式的局部变量可以不用声明为 final,但是必须不可被后面的代码修改(即隐性的具有 final 的语义)
  • 在 Lambda 表达式当中不允许声明一个与局部变量同名的参数或者局部变量。

2. 用途示例:

/**1. 指向一个已经被实现的方法。且参数数量和类型要与接口中定义的一致,返回值类型要与接口中定义的一致

引用方法:方法归属者::方法名
静态方法的归属者为类名,普通方法归属者为对象
*/

//2. 遍历集合  public void forEach(Consumer<? super E> action)

ArrayList<Integer> list = new ArrayList<>();
Collections.addAll(list, 1,2,3,4,5);
list.forEach(System.out::println);

list.forEach(element -> {
  if (element % 2 == 0) {
    System.out.println(element);
  }
});

//3. 删除集合元素  public boolean removeIf(Predicate<? super E> filter)
list.removeIf(item -> item.getId() == 3);

//4. 利用stream()替代静态函数
personList.stream()
.filter( p -> p.getLastName().startWith("Z") )
.forEach( p -> System.out.println(p.getFirstName()));

Lambda表达式

标签:parameter   lis   return   red   final   new   统一   name   each   

原文地址:https://www.cnblogs.com/Winkelzyx/p/12293322.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!