Collections的sort方法 排序
来源:互联网 发布:window串口编程 编辑:程序博客网 时间:2024/05/16 03:30
通过Collection的sort方法对List进行排序,有两种方法实现:
1. List<T>中的对象应继承Comparable接口,并实现其compareTo方法。
//需要比较的对象类PersonH
- public class PersonH implements Comparable<PersonH>
- {
- private int level;
- public Integer getLevel()
- {
- return level;
- }
- public void setLevel(Integer level1)
- {
- this.level = level1;
- }
- Override
- public int compareTo(PersonH o)
- {
- // TODO Auto-generated method stub
- return this.getLevel().compareTo(o.getLevel());
- }
- }
- public class Main
- {
- /**
- * @param args
- */
- public static void main(String[] args)
- {
- // TODO Auto-generated method stub
- PersonH person = new PersonH();
- person.setLevel(6);
- PersonH person2 = new PersonH();
- person2.setLevel(8);
- PersonH person3 = new PersonH();
- person3.setLevel(3);
- ArrayList<PersonH> personList = new ArrayList<PersonH>();
- personList.add(person);
- personList.add(person2);
- personList.add(person3);
- Collections.sort(personList);</span>//排序
- for(PersonH personH : personList) //输出排序后结果
- {
- System.out.println(personH.getLevel());
- }
- }
- }
2. 根据Collection.sort重载之,来实现。
//PersonH类
- public class PersonH
- {
- private int level;
- public Integer getLevel()
- {
- return level;
- }
- public void setLevel(Integer level1)
- {
- this.level = level1;
- }
- }
//Main类
- public class Main
- {
- /**
- * @param args
- */
- public static void main(String[] args)
- {
- // TODO Auto-generated method stub
- PersonH person = new PersonH();
- person.setLevel(6);
- PersonH person2 = new PersonH();
- person2.setLevel(8);
- PersonH person3 = new PersonH();
- person3.setLevel(3);
- ArrayList<PersonH> personList = new ArrayList<PersonH>();
- personList.add(person);
- personList.add(person2);
- personList.add(person3);
- //这里可以更加灵活地指定比较策略,第一种实现方法是在要比较对象的类中就固定了比较策略。
- Collections.sort(personList,new Comparator<PersonH>()
- {
- public int compare(PersonH p1,PersonH p2)
- {
- return p1.getLevel().compareTo(p2.getLevel());
- }
- });
- for(PersonH personH : personList)
- {
- System.out.println(personH.getLevel());
- }
- }
- }
下面看一下该方法是如何进行排序的:
对于第一种:
- public static <T extends Comparable<? super T>> void sort(List<T> list) {
- Object[] a = list.toArray();
- Arrays.sort(a);</span>
- ListIterator<T> i = list.listIterator();
- for (int j=0; j<a.length; j++) {
- i.next();
- i.set((T)a[j]);
- }
- }
- public static void sort(Object[] a) {
- Object[] aux = (Object[])a.clone();
- mergeSort(aux, a, 0, a.length, 0);
- }
对于第二种:
- public static <T> void sort(List<T> list, Comparator<? super T> c) {
- Object[] a = list.toArray();
- Arrays.sort(a, (Comparator)c);
- ListIterator i = list.listIterator();
- for (int j=0; j<a.length; j++) {
- i.next();
- i.set(a[j]);
- }
- }
- public static <T> void sort(T[] a, Comparator<? super T> c) {
- T[] aux = (T[])a.clone();
- if (c==null)
- mergeSort(aux, a, 0, a.length, 0);
- else
- mergeSort(aux, a, 0, a.length, 0, c);
- }
首先看是否指定排序策略,如果没有,则和第一种走一样的逻辑;否则进行指定比较策略的归并排序。
mergeSort函数的源代码可以参考java.util.Arrays类。
0 0
- Collections的sort方法 排序
- Collections的sort方法 排序
- Collections的sort方法 排序
- Collections 类的sort 方法排序
- List的排序方法:Collections.sort();
- Collections.sort对list的排序方法
- java-Collections的sort集合排序方法
- Collections.sort()方法排序对象
- Collections.sort()方法对象排序
- Collections.sort排序的用法
- Collections.sort方法对list排序的两种方式
- Collections.sort方法对list排序的两种方式
- Java-Collections的sort方法对list进行排序
- Collections.sort( )方法对list排序的两种方式
- Collections.sort方法对list的两种排序方式
- Collections.sort对List排序的两种方法
- 使用Collections.sort()实现List正反排序的方法
- java 中的 collections.sort() 方法对list的排序
- js 字符串转换成数字的三种方法
- 一个简单的http请求
- TextView跑马灯显示
- error C2662
- vs2010:无法解析的外部符号 _main
- Collections的sort方法 排序
- XP取SSDT表中指定索引号的函数地址
- 替代ListView的RecyclerView 的使用
- android优化 清除无效代码 UCDetector
- 复制构造函数总结
- 【学习笔记】以bitmap类型获取imageview的图片
- mysql中DATETIME、DATE和TIMESTAMP的区别
- Ant自动渠道打包心得
- PASSION之初始SHELL