import java.util.Arrays;
import java.util.Comparator;
public class LengthComparator implements Comparator<String> {
@Override
public int compare(String first, String second) {
System.out.println("===");
return second.length() - first.length();
}
public static void main(String[] args) {
String[] firend = {"pa","eee","pmee"};
// Arrays.sort(firend);
Arrays.sort(firend, new LengthComparator());
// Arrays.sort(firend, (String first, String second) -> first.length() - second.length());
// Arrays.sort(firend, (String first, String second) -> { if (first.length()>second.length()) {return 1;} else{return 0;}} );
// Arrays.sort(firend, (first, second) -> first.length() - second.length());
for (String string : firend) {
System.out.println(string);
}
}
/**
* lambda表达式
*
*
* Java是一种强类型的语言
*
*1. 语法:
*
* 参数 箭头(->)表达式 如果表达式无法完成计算可以放在{}里
*
* 例如: (String first, String second) -> first.length() - second.length()
* (String first, String second) -> { if (first.length()>second.length()) {return 1;} else{return 0;}}
*
* 即使没有参数,也要提供括号 () - > {for(int i = 0;i< 5 ;i++){System.out.println(i);}}
*
*如果可以推导出参数类型可以将其忽略
* Comparator<String> com = ( first, second) -> first.length() - second.length()
*
*
* 2.
* Arrays.sort(firend, new LengthComparator()); sort方法会调用一个new LengthComparator()对象实例(compare不是静态方法),
* 会不断调用重写的compare方法,直到排序完成(重写compare方法,自定义一个排序方式)。
*
*/
}