2017-01-24 36 views
1

假設我想要一個函數,在該函數中我將使用Comparator對任何數組的第一列進行排序。我想傳入該函數的多維數組,但是,每次這個尺寸的數量都可能不同。我正在考慮使用泛型函數,但是這種方法似乎並不奏效。怎麼做?在java中對未知維數的第一列進行排序

更新: 我正在考慮編寫這樣的代碼,但這甚至沒有編譯,我不太確定我該怎麼做。我必須補充一點,我只考慮String數組。

public <T> T sortArray(T array){ 

     Arrays.sort(array, new Comparator<T>() { 
      @Override 
      public int compare(T lhs, T rhs) { 
       final String str1 = lhs[0]; 
       final String str2 = rhs[0]; 
       return str1.compareTo(str2); 
      } 
     }); 

     return array; 
    } 
+0

Java中的Arraylength總是已知的。你可以用'length'屬性獲得一個數組的長度。因此,您總是知道尺寸;) –

+0

3或4維陣列中的第一列*是什麼?我認爲專欄的概念僅在2維方面起作用。如果你顯示你當前的代碼,事情可能會變得更清晰。 –

+0

@ThomasD。第二,第三,第四.....尺寸的大小在多維數組中是可選的。 – CKing

回答

0

您可能需要的,如果你想讓它仿製藥努力改變這一點,但下面的代碼將用於一般對象的工作(但改變鑄造的比較方法的任何類型傳遞到投給) 。

public Object[][] sortArray(Object[][] array){ 

     Object[] columnElements = new Object[array.length]; 
     for (int i = 0; i < array.length; i++) { 
      columnElements[i] = array[i][0]; 
     } 

     Arrays.sort(columnElements, new Comparator<Object>() { 
      @Override 
      public int compare(Object o1, Object o2) { 
       return ((String) o1).compareTo((String) o2); 
      } 
     }); 


     for (int i = 0; i < array.length; i++) { 
      array[i][0] = columnElements[i]; 
     } 

     return array; 
    } 
相關問題