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方法,自定义一个排序方式)。 * */ }