gpt4 book ai didi

java - 使用java仅相对于第一行按升序对二维数组进行排序

转载 作者:行者123 更新时间:2023-12-02 02:59:34 24 4
gpt4 key购买 nike

这用于基于行的排序

排序前:数组[2][n]

5 4 3 2 1..
3 4 5 9 0..

排序后:

1 2 3 4 5..
0 9 5 4 3..

即数组应仅使用第一行按升序排序,相应的列值应相应更改,如上面的结果所示。

指导我如何使用 Arrays.sort(a, new Comparator() 函数生成此值?

int rowcount= jTable1.getRowCount();
int j;
int parr[][] = new int[10][10];
for(j=0; j<rowcount; j++)
{
parr[0][j]= Integer.parseInt(jTable1.getValueAt(j, 2).toString());
parr[1][j]= Integer.parseInt(jTable1.getValueAt(j, 1).toString());
}

System.out.println("Before sorting");
for(j=0; j<rowcount; j++)
{
System.out.println(parr[0][j]);
}
for(j=0; j<rowcount; j++)
{
System.out.println(parr[1][j]);
}

System.out.println("After sorting");

Arrays.sort(parr, new Comparator<int[]>()
{
@Override
public int compare(int[] o1, int[] o2)
{
return Integer.compare(o2[1], o1[1]);
}
}
);

for(j=0; j<rowcount; j++)
{
System.out.println(parr[0][j]);
}

最佳答案

首先,将二维数组中的列读取为一维数组是不可能的。只能对行执行此操作。

根据您的代码,您正在比较 o2[1] 和 o1[1],这意味着您正在比较两行中的第二个元素,这不是您的要求。

您最好转置矩阵并通过比较 o2[0] 和 o1[0] 应用相同的逻辑,最后再次转置矩阵以获得所需的结果..

关于java - 使用java仅相对于第一行按升序对二维数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42545376/

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