我有一個2D數組,我想基於第二列進行排序。第一列應該與第二列保持配對。基於列排序2D整數數組
二維陣列最初如下(2×10矩陣):
我想上述二維數組進行排序這樣的:
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但我遇到了同樣的問題。
我是否在適應這些解決方案時犯了一些致命錯誤,或者我的代碼應該工作?
另外,我將如何去降序排序這個數組?我會用這行代替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()函數(一個不工作的較老的函數,以及上面看到的那個函數),事實證明我打錯了一個,儘管我認爲我改變了這個調用。那是其中的一個。
如果您想排序數組,請隨意使用上面的代碼。它現在正在全力運作。
該代碼不應該運行;數組的數組有一個單一的數組,其中包含一組兩個元素的數組,當您打印數組時,將其視爲一個由兩個十元數組組成的數組。 –
你說得對,我把我的指數弄混了。謝謝你糾正我。並感謝您的幫助。 – Drake