标签:一个 异常 alt code get lock 继承 void title
源码分析 - Collections.sort()
一、Collection.sort使用
Collections.sort():是对一个集合进行正向排序的方法首先,传入Collections.sort()的集合的元素类型要继承Comparator<T>,这样才能保证可以比较并排序。
根据源码分析,实现方式主要有两种:
(1)对普通类型和String等类型排序
(2)对JavaBean某个属性(比如时间,价格,年龄排序)进行排序
使用案例:
List<String> listOne = Arrays.asList("3", "2", "5", "8"); Collections.sort(listOne);//默认升序 System.out.println("listOne = " + listOne); /** * 输出结果: * listOne = [2, 3, 5, 8] */
二、collections.sort对javabean的list进行排序
算法底层实际是 将集合转换成array,再执行arrays.sort,arrays.sort利用归并排序,优化的快排,timSort等方式。
2、对string类型数据排序
分析String源码;
因为String类型实现了Comparable<String> 接口,所以可以使用Collections.sort(unSorted)进行排序;
List<String> unSorted = new ArrayList<String>(); Collections.sort(unSorted); //String实现了Comparable接口
注意:由于自定义的javabean未实现,所以不能直接使用,但是可以实现一个比较器:
方式一:
Collections.sort(unSorted,new Comparator<unSortedBean>() { @Override public int compare(unSortedBean arg0, unSortedBean arg1) { // 升叙 return arg0.getOrder()-arg1.getOrder(); } });
方式二:
也可以用collections.sort();方式,只需要javabean实现comparable接口并用compareTo()方法实现升序还是降序;
Comparable和Comparator比较实现排序 场景分析
标签:一个 异常 alt code get lock 继承 void title
原文地址:https://www.cnblogs.com/2019wxw/p/12217316.html