java中的排序函数
1.Arrays.sort()函数使用
Arrays.sort()对数组进行排序
一维数组升序
如果是基本数据类型和对应的包装类:使用java.util.Arrays包的Arrays.sort()函数即可。
一维数组降序
如果是基本数据类型,则要先转成对应的包装类:在Arrays.sort()的第二个参数添加即可Collections.reverseOrder()
//Arrays.sort()对元素为整型的数组进行排序 int[] a = new int[]{1,4,2,3,5}; System.out.println("排序前:"); System.out.println(Arrays.toString(a)); //Arrays.sort(a);//默认升序 Arrays.sort(a,0,5);//效果同上,对下标0到下标为(5-1)等5个元素进行排序,参数可变。 System.out.println("升序后:"); System.out.println(Arrays.toString(a)); //Arrays.sort()降序,元素不能是基本数据类型,需要改成对应的包装类 //基本类型的包装类实现了Comparable接口 Integer[] aa = new Integer[5]; for(int i=0;i<5;i++){ aa[i] = new Integer(a[i]); } Arrays.sort(aa,Collections.reverseOrder()); System.out.println("降序后:"); System.out.println(Arrays.toString(aa));
结果:
排序前: [1, 4, 2, 3, 5] 升序后: [1, 2, 3, 4, 5] 降序后: [5, 4, 3, 2, 1]
二维数组升序
如果是基本数据类型和对应的包装类:使用java.util.Arrays包的Arrays.sort()函数即可。同时使用lambda表达式来指定根据行还是列进行排序
int[][] u = new int[][]{{1,2}, {2, 3}, {-1, 4}}; Arrays.sort(u, (a, b) -> (a[1] - b[1]));//根据列升序(第二维)
//Arrays.sort(u, (a, b) -> (a[0] - b[0]));//根据行升序(第一维)
for (int[] num2 : u) { System.out.print(Arrays.toString(num2)); }
结果:
[1, 2][2, 3][-1, 4]
//[-1, 4][1, 2][2, 3]
二维数组降序
只需将上面的(a[1] - b[1])或(a[0] - b[0])中的a与b换一下位置即可
字符串数组排序
使用Arrays.sort()函数
String[] strArray = new String[]{"Z", "a", "D"}; Arrays.sort(strArray);//根据ascll码进行升序 降序则在第二个参数加上Collections.reverseOrder() System.out.println(Arrays.toString(strArray));
结果:
[D, Z, a]
常用ascll码:
0~9: 48~57 A~Z;65~90 a~z:97~122 空格:32
2.Collections.sort()函数使用
Collections.sort()对list集合进行排序。
由于list集合在java中本身就是一个容器,一个对象,存储的是引用,不能存基本数据类型。
List<Integer> list = new ArrayList<Integer>(Arrays.asList(10, 3, 6, 1, 4, 5, 9)); // 升序 Collections.sort(list); // 降序 Collections.sort(list, Collections.reverseOrder());
结果:
[1, 3, 4, 5, 6, 9, 10]
[10, 9, 6, 5, 4, 3, 1]