Lambda表达式是JDK 8开始后的一种新语法形式。
作用:简化匿名内部类的代码写法
简化格式
(匿名内部类被重写方法的形参列表) -> {
重写方法
}
Lambda表达式只能简化函数式接口的匿名内部类的写法形式
什么是函数式接口?
- 首先必须是接口、其次接口中有且仅有一个抽象方法的形式
- 通常会在接口上加上一个@FunctionalInterface注解,标记该接口必须是满足函数式接口
如何使用Lambda?
我们将根据下面三个问题来帮助大家理解和使用Lambda
背景:我们自定义了一个man的类,创建了一个man的List。
class man {
public int age;
public char sex;
public double socre;
public man(int age, char sex, double score) {
this.age = age;
this.sex = sex;
this.score = score;
}
}
问题一
现需要对这个list根据人的年龄进行排序
要实现排序的功能,可以直接调用List对象自带的sort方法完成,但是需要man先实现Comparator的接口并重写compare方法,编译器才能比较两个不同man的大小。但是要更改原始类的代码,会比较麻烦,如果以后要对人的分数进行排序,那就又要更改的类的源码,这样操作很不方便。
sort(Comparator<? super E> c)
方法可以直接传入一个Comparator对象,我们可以直接改写compare方法就可以实现比较。
第一种写法
public class lambdaTry {
public static void main(String[] args) {
List<man> humans = new ArrayList<>();
humans.add(new man(19, 'g', 98.0));
humans.add(new man(18, 'b', 95.0));
humans.add(new man(20, 'b', 96.0));