Java学习笔记-Collections.sort详解

一、使用方法

你可以按照默认的自然序列来排序,当然也可以自定义排序方式自己实现Comparator接口,注意这是一个接口,你只需要自己实现里面的compare()即可。

eg:

Collections.sort(al, new Comparator<Interval>() {
  public int compare(Interval b1, Interval b2) {
    return b1.start - b2.start;
  }
});

二、由jdk的源码来看看,Java如何泛化的来处理排序问题。

    public static <T> void sort(List<T> list, Comparator<? super T> c) {//<T>----泛化类型,不管是什么类型的列表都可以实现排序功能
    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)//c可以为空,就成了自然顺序;
            mergeSort(aux, a, 0, a.length, 0);
        else
            mergeSort(aux, a, 0, a.length, 0, c);//以特定的大小关系进行归并排序。时间复杂度O(nlgn),时间复杂度不错,可以多使用
    }

 

posted @ 2014-03-09 16:09  kcrosswind  阅读(6584)  评论(0编辑  收藏  举报