Lambda表达式

Posted winkelzyx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lambda表达式相关的知识,希望对你有一定的参考价值。

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表达式的主要内容,如果未能解决你的问题,请参考以下文章

JAVA由一个将JSONArray转成Map的需求引发的lambda语法的学习

函数式编程

C# fun

Lambda表达式

Lambda表达式

Lambda表达式