【问题标题】:Sort and Reverse 2D array in java在java中对二维数组进行排序和反转
【发布时间】:2016-02-13 18:03:38
【问题描述】:

如何根据第二列中的整数对整数数组进行排序和反转? 示例输入--{{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]);
    }
});

}
}

【问题讨论】:

  • 您使用什么数据类型?请分享一些代码。还请解释您到目前为止所做的尝试。

标签: java sorting multidimensional-array


【解决方案1】:

DominicEU 的回答做得对,但可以通过使用 Java 8 lambda-syntax 以更短的方式写下来:

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

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

【讨论】:

    【解决方案2】:

    这样的东西会给你你想要的输出

        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]

    【讨论】:

      猜你喜欢
      • 2021-07-14
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      • 1970-01-01
      • 2013-08-17
      相关资源
      最近更新 更多