2017-02-11 3 views
0

Привет У меня есть проблема,рода 2D целочисленный массив JAVA

[в Java]

У меня есть один 2 одномерный массив Его массив с 7 междунар в строке и более строк ..

int[][] new arr=new[7][100]; 

номер в строке оценивается.

Мне нужен ранг.

, например

9 4 15 22 32 47 50 
1 5 9 12 19 25 36 
22 23 25 29 36 55 99 
1 5 11 12 19 25 36 

после сортировки

1 5 9 12 19 25 36 
1 5 11 12 19 25 36 
9 4 15 22 32 47 50 
22 23 25 29 36 55 99 

пожалуйста, есть ли у вас какие-нибудь идеи? как решить проблему спасибо

+1

Вы можете сначала перенести свой массив так, чтобы каждый элемент был одной строкой (т. Е. Int [100] [7] вместо int [7] [100]). Вот пример http://introcs.cs.princeton.edu/java/14array/Transpose.java.html – SpiderPig

ответ

1

Простой подход к решению этой проблемы превращает ваш 2D-массив в список 1D массива.

Затем вы можете использовать Collections.sort() с пользовательской функцией Comparator.

Collections.sort(list, new Comparator<int[]>() { 
    public int compare(int []a,int []b) { 
     for(int i=0;i<6;i++) 
      if(a[i]!=b[i]) return a[i]-b[i]; 
     return a[6] - b[6]; 
    } 
}); 
+0

Я не знаю, как использовать этот код в моей программе. Как использовать arraylist, когда у меня есть int [] [] – user7495572

+0

, я оставил эту часть для вас на практике :). – algojava

+0

Вместо использования ArrayList вы также можете оставить его в виде массива и отсортировать его с помощью массива Arrays.sort. Вам просто нужно превратить ваш 'int [7] [100]' в 'int [100] [7]' first. – SpiderPig

0

Я хотел бы сделать что-то вроде этого, или что-то подобное:

я видел нечто подобное в Stack Overflow: https://stackoverflow.com/a/15452462/8024829.

double[][] array= { 
    {1, 5}, 
    {13, 1.55}, 
    {12, 100.6}, 
    {12.1, .85} }; 

    java.util.Arrays.sort(array, new java.util.Comparator<double[]>() { 
     public int compare(double[] a, double[] b) { 
      return Double.compare(a[0], b[0]); 
     } 
    }); 
Смежные вопросы