1. 程式人生 > >Java中的排序

Java中的排序

要實現排序功能,一般有兩種途徑,這裡對基本型別不適用,基本型別一般有Arrays中的靜態方法.

1.物件本身實現Comparable介面,那麼該類的例項就是可以排序的.
有關Comparable: http://blog.csdn.net/treeroot/archive/2004/09/09/99613.aspx
只要實現了Comparable介面,就可以呼叫Collections的sort方法對集合中的元素排序.

2.指定一個Comparator,也就是實現了Comparator的類的一個例項.
但是Java本身只提供了一個Comparator的實現,就是Collections.reverseOrder().
該方法返回的是一個已經實現了Comparable介面的反序.

看一下Comparator的全部內容:

public interface Comparator {
  int compare(Object o1, Object o2);
  boolean equals(Object obj);
}

定義了兩個方法,其實我們一般都只需要實現compare方法就行了,因為類都是預設從Object繼承
所以會使用Object的equals方法.
Comparator一般都作為一個匿名類出現,對於沒有實現Comparable的物件的集合,排序的時候
需要指定一個Comparator.

這裡舉例說明
對於實現了Comparable的類我們就用最簡單的Integer
List list=new ArrayList();
list.add(new Integer(3));
list.add(new Integer(53));
list.add(new Integer(34));
Collections.sort(list);

對於沒有實現Comparable的,我們就用Object,按照hashCode大小來排序.
List list= new ArrayList();
list.add(new Object());
list.add(new Object());
list.add(new Object());
Collections.sort(list,new Comparator(){ public int compare(Object o1, Object o2){
                    return (o1.hashCode()-o2.hashCode());
                })