Lambda表达式可以用来简化匿名内部类的书写;
Lambda表达式只能简化函数式接口的匿名内部类的写法;
函数式接口:
有且仅有一个抽象方法,接口上方可以加@Functionallnterface注解
public static void main(String[] args) {
String[] arr = {"abcde","aa","aaaa"};//数组装的数据是引用数据类型的数据
/* Arrays.sort(arr, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length() - o2.length();
}
});*/
//lambda简写
//小括号:数据类型可以简写,如果参数只有一个,小括号还可以省略
//大括号:如果方法体只有一行,return,分号,大括号都可以省略
Arrays.sort(arr,(o1,o2)->o1.length() - o2.length());
System.out.println(Arrays.toString(arr));
}
//结果
[aaa, aaaa, abcde]
Arrays.sort(arr)是只能对基本数据类型进行排序的,而且默认升序,想要降序,先要把基本数据类型转换为引用数据类型,再重写compare方法。
Arrays.sort(arr,比较规则)
arr只能比较引用数据类型,如果是基本数据类型需要转换为引用数据类型。
对于Interger,可以用return o1-o2;
对于String ,可以用return o1.length()-o2.length;
对于自定义对象的数组,