【发布时间】:2020-07-20 02:57:15
【问题描述】:
我需要通过对第一列的元素进行降序来对这样的数组进行排序。在第一列元素相等的情况下,第二列元素必须按升序排序。但这我需要的是检查并将空行放在矩阵的末尾,并且只有一个元素放在具有更多元素的相同元素之前的行。
例如在这个数组中{3} - 它是第一行,{} - 最后一行。
int[][] arr = {{1, 2, 3}, {}, {3}, {1, 4}, {3, 2}, {3, 3, 5}};
Arrays.sort(arr, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if(o1[0] == o2[0])
return o1[1] - o2[1];
return o2[0] - o1[0];
}
});
for (int[] ints : arr) {
for (int anInt : ints) {
System.out.print(anInt + " ");
}
System.out.println();
}
【问题讨论】:
-
你想如何比较不规则的数组项?
{}是否被认为高于或低于{3}?{1, 2, 3}和{1, 4}怎么样? -
所以,每个空行都到数组的最后,如果我们有 {3} 和 {3, 0, 2} - {3} 在 {3, 0, 2} 之前
-
{1, 2, 3}和{1, 2}怎么样? -
@ВладГригоренко:我已经编辑了我的答案以符合最后一个标准。
标签: java arrays sorting comparator