2016-02-13 38 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)。