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]

 

posted @ 2024-03-10 11:51  ziyuliu  阅读(228)  评论(0编辑  收藏  举报