Java:根据第二列的值对2D数组进行排序

时间:2012-04-09 15:40:37

标签: java arrays sorting

我正在使用Java,我有一个int [] []数组,如下所示:

[ 65][  4]  
[108][ 47]  
[ 32][279]  
[103][ 26]  
[111][138]  
[100][ 63]  
[112][ 33] ...etc.

我需要根据第二列的值从最小到最大排序。我尝试了这个代码,也可以在这个网站上找到:

    print(myArray);
    System.out.println("==========");

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

    print(myArray);

我的打印方法如下:

public static void print(int[][] array) {
    int k = 0;
    while (array[k][0] != 0) {
        System.out.println("[" + array[k][0] + "][" + array[k][1] + "]");
        k++;
    }
}

无论如何,它似乎都没有第二次打印。我只是不确定我在这里做错了什么。希望这只是一个简单的解决办法:)

1 个答案:

答案 0 :(得分:2)

您的打印方法似乎很糟糕(或者您提供的代码不足以重现您的错误)。您的代码第一次打印,但随后会遇到ArrayIndexOutOfBoundsException(如果这是实际问题,您也应该得到它)。

请尝试使用此打印方法,它适用于我。

public static void print(int[][] array) {
    for (int i = 0; i < array.length; i++) {
        System.out.println("[" + array[i][0] + "][" + array[i][1] + "]");
    }
}