数组排序
1 2 3 4 5 6 7 8 9 10
| int[][] intervals = {{2,3},{2,9},{4,5},{3,7},{6,7},{8,9},{1,10}}; Arrays.sort(intervals, new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { if(o1[0]==o2[0]){ return o1[1] - o2[1]; } return o1[0] - o2[0]; } });
|
此代码中,对于每个o1
和o2
数组,若各自第一个元素(也就是o1[0]
和o2[0]
)相等,则按照各自第二个元素进行升序比较,否则就按照第一个元素进行升序比较。
在此,o1[0] - o2[0]
表示升序,o2[0] - o1[0]
表示降序。
比如这个代码,结果如下:
1 2 3 4 5 6 7
| 1 10 2 3 2 9 3 7 4 5 6 7 8 9
|
o1[0]表示第一个元素,以此类推,所以我们想要根据第几个元素排序,就写入就好:
1 2 3 4 5 6 7 8
| int[][] intervals = {{2,3,4,5},{2,9,7,5},{4,5,1,5},{3,7,1,2},{6,7,3,4}}; Arrays.sort(intervals, new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { return o1[2] - o2[2]; } });
|
结果为:
1 2 3 4 5
| 4 5 1 5 3 7 1 2 6 7 3 4 2 3 4 5 2 9 7 5
|
其他写法
1、使用Lambda表达式的方式对Comparator比较器进行简写(JDK1.8+)
1 2 3 4
| int[][] intervals = {{2,3,4,5},{2,9,7,3},{4,5,1,5},{3,7,1,2},{6,7,3,4}}; Arrays.sort(intervals, (o1, o2) -> { return o1[2] - o2[2]; });
|