2012-04-09 3 views
-1

Я использую Java и у меня есть ИНТ [] [] массив так:Java: Сортировка массива 2D на основе значений второго столбца

[ 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

Что такое 'letter1' и' letter2' в методе 'compare (...)'? – dasblinkenlight

+0

Возможный дубликат [Как отсортировать простой целочисленный 2-мерный массив?] (Http://stackoverflow.com/questions/7908307/how-do-i-sort-a-simple-integer-2-dimensional-array) –

+0

Вероятно, опечатка. Его оригинальное приложение, вероятно, сортирует массивы символов. – Alain

ответ

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] + "]"); 
    } 
} 
+0

А, мне было интересно, это мой метод печати. Понимаете, проблема в том, что во время реализации массива я не должен знать количество символов в тексте. Таким образом, я получаю там кучу [0] [0]. Думаю, теперь я знаю сортировку. – Sam032789

+0

Да, сортировка была в порядке :-) – Paaske

+0

Спасибо, спасибо, спасибо! – Sam032789

Смежные вопросы