java - 如何在 Java 中对二维数组(每一行)进行排序

标签 java algorithm

为了解决一个问题,我需要对二维数组的每一行进行排序。

初始数组

35 22 42 28 20 11
35 21 14 33 1  34
35 42 16 22 38  8
29 12 42 25 28  2
25 28 22 11 20 35
1  40 41 43 44 45

排序后:

11 20 22 28 35 42 
 1 14 21 33 34 35
 8 16 22 35 38 42
 2 12 25 28 29 42
11 20 22 25 28 35
 1 40 41 43 44 45

遵循此文档

Sorting a 2D Integer array based on a column

java Arrays.sort 2d array

他们都建议使用Comparator。

但我的印象是它比较了它的两个参数。当第一个参数小于、等于或大于第二个参数时,返回负整数、零或正整数。

所以不能真正让它适用于我的情况(6 列)。

任何想法/指针都会有所帮助。

接受输入后,这就是我尝试过的

    Arrays.sort(arr, new Comparator<int[]>() {
        @Override
        public int compare(int[] int1, int[] int2) {
            return Integer.valueOf(int1[0]).compareTo(int2[0]);
        }
    });
    for(c=0;c<6;c++) {
        for(d=0;d<6;d++) {
            System.out.println(arr[c][d]);
        }
        System.out.println();
    }        

并得到这个..

35 22 42 28 20 11
35 21 14 33 1 34
35 42 16 22 38 8
29 12 42 25 28 2
25 28 22 11 20 35
1 40 41 43 44 45

1
40
41
43
44
45

25
28
22
11
20
35

29
12
42
25
28
2

35
22
42
28
20
11

35
21
14
33
1
34

35
42
16
22
38
8

最佳答案

二维数组其实就是数组的数组。您希望对每个内部数组进行排序。所以你只需要遍历这些内部数组并对它们进行排序:

int[][] outerArray = ...;
for (int[] innerArray : outerArray) {
    Arrays.sort(innerArray);
}

关于java - 如何在 Java 中对二维数组(每一行)进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20019771/

相关文章:

java - 在 Java 中嵌套条件

java - 如何将 JsonString 的 JsonArray 转换为字符串列表

java - android 项目构建失败

java - Intellij IDEA SQL 自动完成引号

algorithm - 了解长除法算法

algorithm - 通过多个最小生成树分割无向图

java - 比较器比较内部列表字段

java - 最近邻算法和贪心算法有什么区别?

java - 硬币变化递归所有解决方案到不同的解决方案

algorithm - 寻边 二分搜索