2016-02-13 32 views
1

如何基於第二列中的整數對整數數組進行排序和反轉? 示例輸入 - {{1,2},{1,1},{1,3},{1,1},{1,4}} 輸出 - {{1,4},{1 ,3},{1,2},{1,1},{1,1}} 任何人都可以在我的代碼中指出錯誤,它會給出編譯錯誤。java中的排序和反向2D數組

import java.util.*; 
class twod_sort implements Comparator{ 
public static void main(String []args){ 
int a[][]={{1,2},{1,1},{1,3},{1,1},{1,4}}; 
Arrays.sort(numbers, new Comparator<int[]>(){ 
    public int compare(Integer[] o1, Integer[] o2) { 
     return o1[1].compareTo(o2[1]); 
    } 
}); 

}
}

+0

你使用什麼數據類型?請分享一些代碼。也請解釋你到目前爲止所嘗試的。 – Timo

回答

0

像這樣的東西會給你的輸出你想

final Integer[][] data = new Integer[][] { 
      new Integer[] { 1, 2 }, 
      new Integer[] { 1, 1 }, 
      new Integer[] { 1, 3 }, 
      new Integer[] { 1, 1 }, 
      new Integer[] { 1, 4 } }; 

    Arrays.sort(data, new Comparator<Integer[]>() { 
     @Override 
     public int compare(final Integer[] obj, final Integer[] obj2) { 
      final Integer fistValue = obj[1]; 
      final Integer secondValue = obj2[1]; 
      return fistValue.compareTo(secondValue); 
     } 
    }); 

    for (int i = data.length - 1; i >= 0; i--) { 
     System.out.println(Arrays.toString(data[i])); 
    } 

打印以下

[1,4] [ 1,3] [1,2] [1,1] [1,1]

1

DominicEU的回答也不過它可以在更短的方式利用Java的8拉姆達語法寫下來合適的工作:

Arrays.sort(input, (v1, v2) -> Integer.compare(v2[1], v1[1])); 

這將在輸入數組排序而不是僅以相反的順序將其打印到控制檯(請注意Integer.compare-function中的交換v1和v2)。