java - 如何在java中对特定的二维数组进行排序

标签 java arrays sorting

我正在尝试对以下数组进行排序:

int hitlist[][] = new int [17][2];

排序信息总是在 hitlist[i][0] 中,而且是数字,但我找不到 Arrays.sort 的正确方法。

输入看起来像:

[0, 0] 
[4, 0] 
[3, 1] 
[4, 2] 
[4, 4] 
[5, 6] 
[4, 7] 
[4, 8] 
[1, 9] 
[4, 11] 
[4, 12] 
[2, 13] 
[4, 14] 
[4, 15] 
[0, 0] 
[0, 0] 
[0, 0] 

现在我希望它像这样排序:

[1, 9]
[2, 13]
[3, 1]
[4, 0]
[4, 2] 
[4, 4]
[4, 7] 
[4, 8]
[4, 11] 
[4, 12]
[4, 14] 
[4, 15]

最佳答案

如果你想根据索引对数组进行排序,你可以使用 Arrays::sortComparator::comparingInt

int index = 0;
Arrays.sort(hitlist, Comparator.comparingInt(arr -> arr[index]));

这是 Ideone 中的示例


编辑

基于您的 commentcomment ,你想在排序后忽略数组中的 [0, 0],在这种情况下你可以使用:

int[][] hitlist = {{0, 0}, {4, 0}, {3, 1}, {4, 2}, {4, 4}, {5, 6}, {4, 7}, {4, 8}, {1, 9}, {4, 11}, {4, 12}, {2, 13}, {4, 14}, {4, 15}, {0, 0}, {0, 0}, {0, 0}};
int index = 0;
int[][] sortedArray = Arrays.stream(hitlist)
        .filter(arr -> arr[0] != 0 && arr[1] != 0)
        .sorted(Comparator.comparingInt(arr -> arr[index]))
        .toArray(int[][]::new);

Ideone demo

输出

[1, 9]
[2, 13]
[3, 1]
[4, 2]
[4, 4]
[4, 7]
[4, 8]
[4, 11]
[4, 12]
[4, 14]
[4, 15]
[5, 6]

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

相关文章:

Java 通用 SOAP 客户端库

java - java中的高斯类

python - 按行降序排序 Nd Numpy 数组

java - 对不同子数组中数组内的重复项进行排序

c - 在冒泡排序中得到错误的输出

SQL ORDER BY 语句逻辑问题

java - 片段中未调用方法

java - 在 Sling OSGi 容器中实现 Alexa Skills

php - 在没有顺序或键匹配的情况下比较多维数组

arrays - Ruby n 个不同大小的数组中的 2 个的独特组合