百度百科定义:
是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包,和传统数学上的意义有区别。
核心目的:
简化匿名内部类的写法。
lambda表达式只能简化接口中只有一个抽象方法的匿名内部类写法。接口中只有一个抽象方法又称函数式接口。
函数式接口注释:@FunctionalInterface
格式:
(匿名内部类被重写方法的形参列表)->{
被重写方法的方法体代码;
}
简化示例:
List names=new ArrayList();
List s=new ArrayList();
Collections.addAll(names,"王四","张三","赵流","李五");
System.out.println(names.toString());
Collections.addAll(s,'张','王','李','赵');
System.out.println(names.get(1).toString().charAt(0));
Collections.sort(names, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return s.indexOf(o1.charAt(0)) - s.indexOf(o2.charAt(0));
}
});
//简化后
Collections.sort(names, (String o1, String o2)-> s.indexOf(o1.charAt(0)) - s.indexOf(o2.charAt(0)));
System.out.println(names.toString());