如何根据第二列对二维数组中的第一列进行排序?

时间:2011-11-05 17:37:49

标签: java arrays sorting multidimensional-array

例如:

我在数组中的第一列首先按数字顺序排列。第二列是数字随机的。我想按顺序放置第二列,这当然会强制第一列乱序。任何想法如何在java中这样做。我已经搜索过,但似乎无法找到正确找到它的词汇。

1 个答案:

答案 0 :(得分:4)

您可以使用的方法之一是Arrays.sort(),您可以在其中定义自己的比较器,它可以比较二维数组的两行。

下面的代码分配一个包含两列和十行的数组,第一列已排序,第二列完全随机。然后根据第二栏对其进行排序。

class Test{

    static void print(int[][] a){
        for (int i=0;i<a.length;i++){
            for (int j=0;j<a[0].length;j++) 
                System.out.print(a[i][j]+" ");
            System.out.println();
        }
    }

    public static void main(String[]args){

        java.util.Random r = new java.util.Random();
        int[][] a = new int[10][2];
        for (int i=0;i<a.length;i++){
            a[i][0]=i+1;
            a[i][1]=r.nextInt(100);
        }

        print(a);
        System.out.println();

        java.util.Arrays.sort(a, 
            new java.util.Comparator<int[]>(){
                public int compare(int[]a,int[]b){
                    return a[1]-b[1];
                }
        });

        print(a);
    }
}

示例输出:

1 8 
2 49 
3 82 
4 89 
5 8 
6 0 
7 83 
8 89 
9 8 
10 46 

6 0 
1 8 
5 8 
9 8 
10 46 
2 49 
3 82 
7 83 
4 89 
8 89