Java基于三列对数组进行排序

标签 java arrays sorting

在学习 Java 的过程中,我遇到了一个疑问。

我们可以使用 Arrays.sort() 对一维数组进行排序,但是如果我想根据三列对二维数组进行排序呢?是否有任何选项可以解决这个问题,还是我必须自己编写代码(类似于三个嵌套循环)?

这是一个示例输入:

13  2   28  36  
1   4   56  17  
4   2   5   40  
2   4   41  55  
9   5   48  12  
19  2   25  12  
20  5   13  8   
15  3   51  30  
12  5   39  59  
17  3   56  40  
3   1   56  46  
7   3   28  51  
8   5   14  58  
5   3   34  15  
14  4   53  2   
18  4   38  57  
6   2   16  25  
16  3   17  13  
10  5   41  33  
11  1   13  57  

列是 int,它存储在一个 int 数组中。

我想按第 2 列排序,如果找到相等的数字,则按第 3 列排序,最后,如果找到相等的数字,则按第 3 列排序。

输出应该是这样的:

11  1   13  57  
3   1   56  46  
4   2   5   40  
6   2   16  25  
19  2   25  12  
13  2   28  36  
16  3   17  13  
7   3   28  51  
5   3   34  15  
15  3   51  30  
17  3   56  40  
18  4   38  57  
2   4   41  55  
14  4   53  2   
1   4   56  17  
20  5   13  8   
8   5   14  58  
12  5   39  59  
10  5   41  33  
9   5   48  12  

有没有简单的方法可以做到这一点? 请记住,我是 Java 新手。

问候,

法沃拉斯

最佳答案

简单使用 Comparator 并使用 Arrays.sort(arr, comparator);

关于Java基于三列对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8078200/

相关文章:

Java if() 不工作

java - 如何杀死正在等待同步资源的线程?

c++ - 根据优先级按字典顺序对 vector 列表进行排序

c - Top N 记录排序以仅返回排序数组中特定范围内的数字

c - 将数组传递给函数和子集求和程序

c++ - 优先队列排序 [C++]

java - Android DialogFragment 检索所选选项

java - modelAndView返回后执行任务

java - Java 中的接口(interface)数组

Java - 有类似二进制流的东西吗?