gpt4 book ai didi

java - JAVA中二维数组的排序问题

转载 作者:行者123 更新时间:2023-11-30 07:22:23 25 4
gpt4 key购买 nike

使用下面的代码,我尝试对二维数组进行排序

 int[][] d2 = {
{4,5,1},
{4,1,1},
{1,7,1},
{3,3,2},
{1}
};

java.util.Arrays.sort(d2, new java.util.Comparator<int[]>() {
public int compare(int[] a, int[] b) {
return a[0] - b[0];
}
});

排序后显示数组

for (int r=0; r<d2.length; r++) {
for (int c=0; c<d2[r].length; c++) {
System.out.print(" " + d2[r][c]);
}
System.out.println("");
}

我得到的结果是这样的

 1 7 1
1
3 3 2
4 5 1
4 1 1

我希望结果二是这样的

 1
1 7 1
3 3 2
4 5 1
4 1 1

要像上面那样对数组进行排序需要做什么?

我尝试用 {1,0,0} 替换 {1} 但它仍然给出相同的结果,即使对于 {1,0,1

最佳答案

compare方法中比较传入数组的长度。如果a[]的长度小于b[],返回-1: -

    java.util.Arrays.sort(d2, new java.util.Comparator<int[]>() {
public int compare(int[] a, int[] b) {
if (a.length != b.length) {
return a.length < b.length ? -1 : 1;
}
return a[0] - b[0];
}
});

如果你想通过检查每个元素进行排序,我认为你应该这样做。将你的 compare 方法更改为:-

public int compare(int[] a, int[] b) {

if (a.length == b.length) {
for (int i = 0; i < a.length; i++) {
if (a[i] == b[i]) {

} else {
return a[i] - b[i];
}
}
return 0;

} else {
return a.length < b.length ? -1 : 1;
}
}

关于java - JAVA中二维数组的排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12798926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com