在java中对2D数组进行排序和反转

时间:2016-02-13 18:03:38

标签: java sorting multidimensional-array

如何根据第二列中的整数对整数数组进行排序和反转? 示例 - 输入 - {{1,2},{1,1},{1,3},{1,1},{1,4}}         输出 - {{1,4},{1,3},{1,2},{1,1},{1,1}} 任何人都可以在我的代码中指出错误,它会给出编译错误。

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]);
    }
});

}
}

2 个答案:

答案 0 :(得分:1)

DominicEU的回答是正确的,但可以通过使用Java 8 lambda语法以更短的方式写下来:

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

这将以相反的顺序对输入数组进行排序,而不是仅以相反的顺序将其打印到控制台(请注意Integer.compare函数中交换的v1和v2)。

答案 1 :(得分: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]