gpt4 book ai didi

java - 根据列对二维整数数组进行排序

转载 作者:搜寻专家 更新时间:2023-10-31 20:30:24 25 4
gpt4 key购买 nike

我有一个二维数组,我想根据第二列对其进行排序。第一列应与第二列保持配对。

二维数组最初如下(2x10 矩阵):

0 10
1 9
2 9
3 9
4 15
5 10
6 4
7 8
8 11
9 12

我希望上面的二维数组像这样排序:

4 15
9 12
8 11
0 10
5 10
1 9
2 9
3 9
7 8
6 4

现在,我尝试改编来自:Sort a two dimensional array based on one column 的答案进入这段代码:

Arrays.sort(theArray, new Comparator<Integer[]>()
{
@Override
public int compare(Integer[] int1, Integer[] int2)
{
Integer numOfKeys1 = int1[1];
Integer numOfKeys2 = int2[1];
return numOfKeys1.compareTo(numOfKeys2);
}
});

但是,它似乎根本没有对数组进行排序。在调用 sort() 函数后打印数组时,数组处于其初始顺序。

我还尝试从这里调整答案:sorting 2D array of String in java但我遇到了同样的问题。

我在采用这些解决方案时是否犯了一些 fatal error ,或者我的代码是否应该工作?

此外,我将如何按降序对这个数组进行排序?我会用这一行替换 compare() 中的 return 语句吗?

return -numOfKeys2.compareTo(numOfKeys1);

如有任何帮助,我们将不胜感激。谢谢!

编辑:只需发布我的其余代码,看看问题是否出在其他地方。

public void Sort()
{
Integer[][] theArray = {{0,10},{1,9},{2,9},{3,9},{4,15},{5,10},{6,4},{7,8},{8,11},{9,12}};;

dump(theArray);
Arrays.sort(theArray, new Comparator<Integer[]>()
{
@Override
public int compare(Integer[] int1, Integer[] int2)
{
Integer numOfKeys1 = int1[1];
Integer numOfKeys2 = int2[1];
return numOfKeys1.compareTo(numOfKeys2);
}
});

System.out.println("====");
dump(theArray);
}

public void dump(Integer[][] array)
{
for(int p = 0, q = 10; p < q; p++)
{
System.out.println(array[p][0] + " " + array[p][1]);
}
}

编辑 2:

我已经开始工作了。谢谢大家的帮助。我有多个 Sort() 函数(一个不起作用的旧函数,以及您在上面看到的那个),结果我调用了错误的函数,尽管我认为我改变了调用。只是那些日子之一。

如果您想对数组进行排序,请随意使用上面的代码。它现在完全正常工作。

最佳答案

现在你可以像下面这样轻松地做到这一点。这将根据第 2 列降序排列数组。

Arrays.sort(theArray, (a, b) -> b[1] - a[1]);

关于java - 根据列对二维整数数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7937134/

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