lambda表达式用于简化匿名内部类的代码
1 代码示例
1.1 如果我们没有使用lambda表达式,直接书写匿名内部类将十分复杂,比如以下代码使用匿名内部类重写了Arrays中的排序方法(默认为从小到大顺序快速排序)
改写该方法,数据必须为引用类型,所以使用了泛型Integer
public class A01_MyArraysDemo2 {
public static void main(String[] args) {
Integer[] arr = {2, 3, 1, 5, 6, 7, 8, 4, 9};
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
});
System.out.println(Arrays.toString(arr));
}
}
1.2 使用了lambda表达式改写
1.2.1 使用条件:必须为函数式接口(有且仅有一个抽象方法的接口)
1.2.2 省略了很多内容,这些内容也并不是可以随便省略的,规则如下
1 new,类名,方法名,参数类型可以省略
2 如果只有一个参数,参数的小括号也可以省略
3 如果大括号里面的内容只有一行,那么return,大括号,分号也可以省略
public class A01_LambdaDemo1 {
public static void main(String[] args) {
String[] arr = {"a", "aaaa", "aaa", "aa"};
Arrays.sort(arr, (o1, o2) -> o1.length() - o2.length());
System.out.println(Arrays.toString(arr));
}
}