Java Comparator 自定义排序规则
做 LeetCode Q56 时遇到的问题:56. 合并区间
跟 C++ 里的 cmp
差不多,三种写法。
假如有二维数组
int[][] intervals = new int[n][2];
现在要以每行的第一列为主键排序。
一、匿名内部类
Arrays.sort(intervals, new Comparator<int[]>() {
public int compare(int[] a, int[] b) {
return a[0] - b[0]; // 升序
}
});
二、 Lambda 表达式
Java 8 之后可以简写为:
Arrays.sort(intervals, (a, b) -> a[0] - b[0]);
三、实现 Comparator 接口的类
class IntervalComparator implements Comparator<int[]> {
public int compare(int[] a, int[] b) {
return a[0] - b[0];
}
}
// 使用
Arrays.sort(intervals, new IntervalComparator());
说实话,并没有完全理解 :(