1 一维数组
有一下几种排序方式:
- 默认顺序排序
int [] a = {4,5,3,1,7}; Arrays.sort(a);
- 倒序排序
- 使用
Collections.reverseOrder()
对其进行倒序排序,但是必须将数据的类型改成`Integer类型,否则不能进行。Integer [] a = {4,5,3,1,7}; Arrays.sort(a, Collections.reverseOrder());
- 实现
Comparator
接口中的Compare()
方法
单独实现该接口:
使用匿名类的方式实现:class MyComparator implements Comparator<Integer>{ @Override public int compare(Integer o1, Integer o2) { return o2-o1; } } Integer [] a = {4,5,3,1,7}; MyComparator myComparator = new MyComparator(); Arrays.sort(a, myComparator);
Integer [] a = {4,5,3,1,7}; Arrays.sort(a, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2 - o1; } });
2 二维数组
如果是升序,是o1 - o2
,如果是倒序则是o2 - o1
。
-
按二维数组的行进行排序:
int[][] a = new int[][]{ {4,5},{0,1},{1,2},{1,3},{2,5},{3,4} }; Arrays.sort(a, Comparator.comparingInt(o -> o[0])); //Arrays.sort(a, (o1, o2) -> (o1[0] - o2[0]);//匿名
排序结果为:
0 1
1 2
1 3
2 5
3 4
4 5 -
按二维数组的列进行排序
int[][] a = new int[][]{ {4,5},{0,1},{1,2},{1,3},{2,5},{3,4} }; Arrays.sort(a, (o1, o2) -> (o1[1] - o2[1]));
排序结果为:
0 1
1 2
1 3
3 4
4 5
2 5