2015-05-28 4 views
0

У меня есть массив многомерных строк. Он содержит числа и строки. Есть ли способ отсортировать его по определенному целочисленному столбцу? , например. У меня есть:Сортировка нескольких массивов многомерных измерений по определенному столбцу

  1. Фокс | 32 | Один
  2. Собака | 45 | Два
  3. Cat | 34 | Три
  4. Змея | 3 | Четыре

Я хочу отсортировать массив строк по целочисленному столбцу. Например:

  1. Собака | 45 | Два
  2. Cat | 34 | Три
  3. Фокс | 32 | Один
  4. Змея | 3 | Четыре

Я пробовал с этим, но для этого требуется целочисленный массив.

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

почему бы вам не использовать массив объектов? –

+0

int [] o1, int [] o2 вы говорите, что у вас есть буксирные массивы типа integer, я уверен, что если вы измените это на int o1 и int o2, все будет хорошо –

ответ

1

Это решает проблему: (обновлена)

public static void main(String[] args) { 
    String[][] temp = { 
     { "Fox", "32", "One" }, 
     { "Dog", "45", "Two" }, 
     { "Cat", "34", "Three" }, 
     { "Snake", "3", "Four" } 
    }; 

    Arrays.sort(temp, new Comparator<String[]>() { 
     @Override 
     public int compare(String[] row1, String[] row2) { 
      return Integer.compare(
        Integer.parseInt(row1[1]), Integer.parseInt(row2[1])); 
     } 
    }); 

    System.out.println(Arrays.deepToString(temp)); 
} 
+0

действительно? у вас есть row1 и row2 как тип объекта, и вы бросаете их в целое число в конце? он может работать, но мне это не кажется –

+0

Да, правильный путь - иметь специальный тип для объекта этой строки и специальный компаратор для него. Но это решает ответный случай. –

+0

, и мне даже не ясно, как op хочет сортировать базу 2d массива на что? –

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