大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
-
数组Sort排序
正序排序:Arrays.sort(array),会检查数组个数大于286且连续性好就使用归并排序,若小于32使用插入排序,其余情况使用快速排序
int[] array = { 10, 3, 6, 1, 4, 5, 9}; Arrays.sort(array);
降序排序:先将数组Arrays.asList()转为集合,然后使用Collections.reverse()反转集合,注意如果是基础数据类型(不是数据包装类),不能使用Arrays.asList()方法可以使用Guava的Ints.asList()方法代替
Integer[] array = { 10, 3, 6, 1, 4, 5, 9}; Arrays.sort(array); List<Integer> list = Arrays.asList(array); Collections.reverse(list);//冒泡 交换
-
简单集合Sort排序
说明:主要是对jdk类库中的包装类排序,例如:Integer、String等,这些类都已经重写了Compare方法,都有默认排序规则
常规方式:
List<Integer> list = new ArrayList<Integer>(Arrays.asList(10, 3, 6, 1, 4, 5, 9)); // 升序 Collections.sort(list); // 降序 Collections.sort(list, Collections.reverseOrder());
lambda方式:
// 升序 List<Integer> collect = list.stream().sorted().collect(Collectors.toList()); // 降序 List<Integer> collect = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()); lists.sort((o1,o2)->o1.getAge()-o2.getAge()); lists.sort(Comparator.comparing(Person::getAge).reversed().thenComparing(Person::getName));
-
对象集合Sort排序
lambda方式:排序值不能为null
//方法二:使用stream sorted方法 list=list.stream().sorted((s2,s1 )->s1.getShowOrder().compareTo(s2.getShowOrder())).collect(Collectors.toList()); //方法三:使用jdk8的sort方法 list.sort((s2,s1)->s1.getShowOrder().compareTo(s2.getShowOrder())); //方法四:总结 Arrays.sort(array, (v1, v2) -> v1[0] - v2[0]); Collections.sort(list, (o1,o2)->o1[0]-o2[0]); list.sort((o1, o2) -> o1[0] - o2[0]);
Comparable方式:在实体中实现Comparable<实体>接口,重写compareTo方法,缺点不灵活
public class Student implements Comparable<Student> { private String name; private Integer age; public int compareTo(StudentAsc o) { if(null == this.age) { return -1; } if(null == o.getAge()) { return 1; } return this.age.compareTo(o.getAge()); } }
Comparator方式:使用Collections.sort(List list, Comparator<? super T> c)方法来实现相对上面来说灵活很多
Collections.sort(students, new Comparator<Student>() { public int compare(Student o1, Student o2) { if(null == o1.getAge()) { return -1; } if(null == o2.getAge()) { return 1; } return o1.getAge().compareTo(o2.getAge()); } });
-
Sort方法详解(待补充)
说明:Collections.sort方法底层就是调用的array.sort方法,根据数据大小的不同会使用插入排序、归并排序、快速排序(后两种排序算法都是分治思想)
参考:
https://blog.csdn.net/whp1473/article/details/79678974
https://blog.csdn.net/MrLiar17/article/details/89188038
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/169884.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...