java - 使用内置排序功能对二维数组进行排序
问题描述
我正在使用 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 吗?它之间有什么不同?
谢谢
解决方案
请记住,Java 中实际上并不存在“二维数组”,因此您真正要处理的是“一个数组int[]
”(本质上并没有阻止每个数组的int[]
长度不同)。
所以:当你排序时,你是在比较那个“数组int[]
”的各个元素,因为每个元素都是一个int[]
,你的比较器也是 for int[]
。
推荐阅读
- java - 无法在项目上执行目标无法解析项目的依赖关系无法收集依赖关系
- c - Windows 10 上 C/C++ 错误的 IntelliSense 扩展
- linux - ansible playbook中的'cat'命令不会附加文件
- javascript - 用其他数组中的值更新数组中对象的值
- elasticsearch - 我们如何在 Elastic Search 中的文本类型列上聚合 SUM?
- python - 在全局 boto 资源上使用 moto
- r - 从 List 中提取特定元素
- symfony - 参数太多:查询定义了 0 个参数,你绑定了 1 个错误
- r - 如何将 array1 (2D) 添加到 array2 (3D)?
- sql - 具有仅包含另一列的部分功能的 SQL 查询?