Lambda表达式是JDK8以后的一种新语法形式,他的作用就是为了简化代码,尤其是匿名内部类的代码。
注意:Lambda尽可以简化函数是接口的匿名内部类,而所谓函数式接口就是一个接口中有且仅有一个抽象方法。
(被重写方法的形参列表)->{
重写的方法体代码;
}
例如使用Lambda表达式简化Arrays.sort()方法里面的比较器Comparator,为什么可以简化呢,因为他是函数式接口(FunctionalInterface)。
假如我们拥有一个学生类型的数组,学生类里有年龄和姓名,我们想按照学生的年龄进行排序。
Arrays.sort(students, new Comparator<student>() {
@Override
public int compare(student o1, student o2) {
return o1.getAge()-o2.getAge();
}
});
//简化后
Arrays.sort(students, (o1, o2)-> o1.getAge()-o2.getAge());
很明显代码简洁了许多。
附上Lambda表达式的简化规则:
1、参数的类型可以省略不写。
2、如果只有一个参数的话,参数类型省略的同时,括号()也可以省略
3、如果里面的方法体代码只有一行,那么大括号可以省略不写,同时要省略分号。(如果是return语句,那么return必须省略不写,同时也必须省略" ;"不写