一尘不染

Java比较器类对数组进行排序

java

说,我们有以下二维数组:

int camels[][] = new int[n][2];

应该如何Comparator声明Java 类以使用降序按数组的第一个元素对数组进行排序Arrays.sort(camels, comparator)compare供参考的功能是:

@Override public int compare(int[] a, int [] b)
{
    return b[0] - a[0];
}

阅读 265

收藏
2020-03-22

共1个答案

一尘不染

[…]应该如何声明Java Comparator类以按其降序将数组的第一个元素排序 […]

这是使用Java 8的完整示例:

import java.util.*;

public class Test {

    public static void main(String args[]) {

        int[][] twoDim = { {1, 2}, {3, 7}, {8, 9}, {4, 2}, {5, 3} };

        Arrays.sort(twoDim, Comparator.comparingInt(a -> a[0])
                                      .reversed());

        System.out.println(Arrays.deepToString(twoDim));
    }
}

输出:

[[8, 9], [5, 3], [4, 2], [3, 7], [1, 2]]

对于Java 7,你可以执行以下操作:

Arrays.sort(twoDim, new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
        return Integer.compare(o2[0], o1[0]);
    }
});

如果你不幸无法在Java 6或更早版本上运行,请执行以下操作:

Arrays.sort(twoDim, new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
        return ((Integer) o2[0]).compareTo(o1[0]);
    }
});
2020-03-22