5、g>() { 4. @Override 5. public int compare(String a, String b) { 6. return b.compareTo(a); 7. } 8.}); 静态工具方法Collections.sort接受一个list,和一个Comparator接口作为输入参数,Comparator的实现类可以对输入的list中的元素进行比较。通常情况下,你可以直接用创建匿名Comparator对象,并把它作为参数传递给sort方法。 除了创建匿名对象以外,Java8还提供了一种更简洁的方式,Lambda表达式
6、。 Java代码 1.Collections.sort(names, (String a, String b) -> { 2. return b.compareTo(a); 3.}); 你可以看到,这段代码就比之前的更加简短和易读。但是,它还可以更加简短: Java代码 1.Collections.sort(names, (String a, String b) -> b.compareTo(a)); 只要一行代码,包含了方法体。你甚至可以连大括号对{}和return关键字都省略不要。不过这还不是最短的写法: Java代码 1.Collections.sort(nam
7、es, (a, b) -> b.compareTo(a)); Java编译器能够自动识别参数的类型,所以你就可以省略掉类型不写。让我们再深入地研究一下lambda表达式的威力吧。 函数式接口Lambda表达式如何匹配Java的类型系统?每一个lambda都能够通过一个特定的接口,与一个给定的类型进行匹配。一个所谓的函数式接口必须要有且仅有一个抽象方法声明。每个与之对应的lambda表达式必须要与抽象方法的声明相匹配。由于默认方法不是抽象的,因此你可以在你的函数式接口