@FunctionalInterface
public interface Comparator<T>{
}
函数式接口
@FunctionalInterface 这个注解表明该接口是一个函数式接口。什么是函数式接口?一般而言,函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。@FunctionalInterface:标明一个接口是一个函数式接口。
接口中的方法会被隐式的指定为 public abstract
接口中的变量会被隐式的指定为 public static final
函数式接口可以使用lambda表达式调用
优点:
代码简介,开发迅速
方便函数式编程
非常容易进行并行计算
Java引入Lambda,改善了集合操作(引入Stream API),并可以利用到Lambda表达式的延后性
###缺点:
代码可读性差
在非并行计算中,很多未必有传统的for性能高
不容易进行调试
Collections.sort Array.sort 方法的第二个参数都使用了这个接口
案例
/*
* 给定 n 个学生的学号(从 1 到 n 编号)以及他们的考试成绩,表示为(学号,考试成绩),
* 请将这些学生按考试成绩降序排序,若考试成绩相同,则按学号升序排序。
* */
public class Solution1 {
/**
* @param array: the input array
* @return: the sorted array
*/
public static int[][] multiSort(int[][] array) {
// Write your code here
Arrays.sort(array,(int[] l,int[] r)->{
return l[1]==r[1]? l[0]-r[0]:r[1]-l[1];
});
return array;
}
}