开发者社区> 问答> 正文

使用内置排序功能对2d数组进行排序

使用内置排序功能对2d数组进行排序 我正在使用Arrays.sort()函数对2d数组(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吗?两者有什么不同?

谢谢


问题来源:stackoverflow

展开
收起
七天一失眠 2020-04-11 15:54:49 2187 0
1 条回答
写回答
取消 提交回答
  • 做一个优秀的阿里云志愿者

    请记住,Java中实际上并不存在“ 2D数组”,因此您真正要处理的是“一个数组int[]”(没有内在的本质,可以防止它们的int[]长度不同)。

    因此:当您进行排序时,您正在相互比较“数组int[]”的各个元素,并且由于每个元素都是一个int[],因此您的Comparator也适用于int[]。


    答案来源:stackoverflow

    2020-04-11 15:55:03
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载