做 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());

说实话,并没有完全理解 :(

标签: none

添加新评论