首页 > 解决方案 > 使用内置排序功能对二维数组进行排序

问题描述

我正在使用 Arrays.sort() 函数对二维数组(int[][] 数组)进行排序。因为我想根据第一个元素对其进行排序。例如,{{2,3},{1,4}} 基于第一个元素,数组将为 {{1,4},{2,3}}。所以我覆盖了比较功能。

Arrays.sort(arr, new Comparator<int[]>() {

    @Override
    public int compare(int[] o1, int[] o2){
        if(o1[0] < o2[0]){
            return -1;
        } else if (o1[0] > o2[0]) {
            return 1;
        } else {
            return 0;
        }
    }

})

我知道这种工作。但我不明白这个比较是如何工作的。我在想

new Comparator<int[]>  

应该

new Comparator<int[][]>

因为这是二维数组。并且比较函数内部应该是比较

o1[0][0]  and  o2[0][0]

谁能帮我理解一下?

这也是使用 Arrays.sort,我可以使用 Collections.sort 吗?它之间有什么不同?

谢谢

标签: javasorting

解决方案


请记住,Java 中实际上并不存在“二维数组”,因此您真正要处理的是“一个数组int[]”(本质上并没有阻止每个数组的int[]长度不同)。

所以:当你排序时,你是在比较那个“数组int[]”的各个元素,因为每个元素都是一个int[],你的比较器也是 for int[]


推荐阅读