这一行lambda表达式
Arrays.sort( planets , (first,second)->first.length()-second.length() );
其实就等于匿名内部类的写法:
Arrays.sort(planets,
new Comparator<String>() {
@Override
public int compare(String first, String second) {
return first.length()-second.length();
}
}
);
Arrays.sort()方法有两个参数,第一个参数是要排序的数组,第二个参数是一个被实现了的接口,实现这个的方法写的就是你要排序的规则(按大小排,按长度排。。。)
- 插一句:为什么要用匿名内部类或lambda表达式?因为这个接口只会被用一次,没有必要非要写个实现类
再看这个被重写的方法的参数,就是lambda表达式->
前面的两个参数
@Override
public int compare(String first, String second) {
return first.length()-second.length();
}
lambda表达式后面first.length()-second.length());
其实就是方法体
你的这个lambda表达式是简写的,可以这样写,看得更直观:
(first, second) -> {
return first.length() - second.length();
}