【Comparable和Comparator源碼】
java.lang.Comparablepublic interface Comparable{public intcomparaTo(T o);
}------------------------------------------------------------------java.util.Comparatorpublic interface Comparator{intcompare(T o1,T o2);booleanequals(Object obj);
}
【Comparable接口】
若一個類實作了Comparable接口,就意味着該類支援排序。假設存在實作了 Comparable接口的類的對象的List清單(或數組),則該List清單(或數組)可以通過Collections.sort(或Arrays.sort)進行排序。
【Comparator接口】
我們需要控制某個類的次序,而該類不支援排序(即沒有實作Comparable接口)。那麼,我們可以建立一個該類的比較器,這個比較器隻需要實作Comparator。若一個類實作了Comparator接口,則它一定要實作compare(T o1,T o2)方法,但不一定要實作equals(Object obj)方法;
【兩者比較】
1.Comparable是排序接口;若一個類實作了Comparable接口,就意味着“該類支援排序”;而Comparator是比較器;我們若需要控制某個類的次序,可以建立一個“該類的比較器”來進行排序。
2.Comparable相當于“内部比較器”,而Comparator相當于“外部比較器”。
原文:http://www.cnblogs.com/hwu2014/p/4479211.html