首页 > 编程语言 >java中的排序函数

java中的排序函数

时间:2024-03-10 11:55:06浏览次数:15  
标签:sort java 函数 Arrays 降序 Collections 升序 排序

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]

 

标签:sort,java,函数,Arrays,降序,Collections,升序,排序
From: https://www.cnblogs.com/a155-/p/18063899

相关文章

  • [JavaScript] JavaScript的时间与时区
    0序言第1章节,原创,主要关注:JS的时间、时区国际化问题第2章节,主要来自于第1篇参考文献(系对第1章节的基础知识的夯实)1JavaScript时间、时区的国际化(案例)本案例等同于问题:JavaScript从浏览器根据不同时区获取时间的问题假定现在有两台Windows笔记本电脑。Step1设置......
  • 记录一个报错信息:Name for argument of type [java.lang.Integer] not specified, and
    报错如下:错误复现代码如下:@GetMapping("/consumer/pay/getById/{orderId}")@Parameter(name="orderId",description="订单id",in=ParameterIn.PATH)publicRgetOrder(@PathVariableIntegerorderId){System.out.println(o......
  • 函数返回数组指针 看不太懂
    有三种方法1.声明一个返回数组指针的函数int(*func(inti))[10];func(inti)表示调用func函数所需要一个int类型的实参。(*func(inti))意味着我们可以对函数调用的结果执行解引操作。//意思就是函数调用的结果的是个指针。(*func(inti))[10]......
  • 7-10 英文单词排序(string类型的长度表示方法)
    7-10英文单词排序分数15作者张泳单位浙大城市学院本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。输入格式:输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的......
  • abc217E 带排序的查询
    题面:初始时有个空序列A,接下来有Q组操作,每个操作的格式如下:1x,将x追加到A的末尾。2,输出A开头的元素值,并移除。请求时保证A非空。3,对A中元素从小到大排序。范围:Q<=2E5;x<=1E9思路:用一个队列来维护还没有排序的元素,再用一个优先队列来维护已排序的元素。由于每次只能追加到末......
  • 搭建一个Java项目可直接拿去使用的通用工具类
    1、通用枚举类importlombok.Getter;/***@Description状态码定义约束,共6位数,前三位代表服务,后3位代表接口*比如商品服务210,购物车是220、用户服务230,403代表权限**/publicenumBizCodeEnum{/***短链分组*/GROUP_REPEAT(23001,"分组名......
  • Java登陆第三十三天——ES6(二)模块、模块化
    模块化是管理JS代码的一种手段,把代码拆分成小模块,提高代码维护性,复用性,拓展性。模块类似与Java的包,可以从外部导入。模块有三种导出方式分别导出统一导出默认导出三种导出方式可以混用。模块化的关键字有export、import、as和default。ES6的模块会自动开启严格......
  • java8特性-函数式接口
    什么是函数式接口?只包含一个抽象方法的接口,称为函数式接口检验方法:  Java内置的4大核心函数式接口消费型接口Consumer<T>voidaccept(Tt)供给型接口Supplier<T>Tget()函数型接口Function(T,R)Rapply(Tt)断定型接口Predicate<T>booleantest(Tt)......
  • JAVA使用DFA算法过滤敏感词
    代码示例如下:importcn.hutool.core.collection.CollUtil;importcn.hutool.core.util.ReUtil;importcn.hutool.core.util.StrUtil;importcom.google.common.collect.Lists;importcom.google.common.collect.Maps;importjava.util.*;publicclassSensitiveWordUtils......
  • Java登陆第三十三天——ES6(二)浅拷贝、深拷贝;
    对象的拷贝,就是复制一个已有对象的方式。JS中对象的拷贝<script>console.log("1.浅拷贝,对象仅拷贝引用地址,基本类型拷贝的是值");letdoor1=["木门"];letdoor2=door1;//浅拷贝仅仅是拷贝引用地址door2[0]="铁门";console.log(door1);//['铁门']......