Comparable接口,此接口強行對實現它的每一個類的對象進行總體排序。此排序被稱爲該類的天然排序 ,類的 compareTo 方法被稱爲它的天然比較方法 。實現此接口的對象列表(和數組)能夠經過 Collections.sort (和 Arrays.sort )進行自動排序。實現此接口的對象能夠用做有序映射表中的鍵或有序集合中的元素,無需指定比較器。 java
若是一個類實現了Comparable接口,就代表他的實例具備內在的排序關係。數組
public interface Comparable<T>{ int compareTo(T t); }
compareTo方法的通用約定與equals方法想似:ide
1:比較此對象與指定對象的順序。若是該對象小於、等於或大於指定對象,則分別返回負整數、零或正整數。spa
2:若是因爲指定對象的類型而沒法與該對象進行比較(若是兩個被比較的對象引用不一樣類的對象),則拋出ClassCastException異常。code
3:Comparable接口是參數化的,並且compareTo方法時靜態類型的,所以沒必要進行類型檢查,也沒必要對它的參數進行類型轉。若是參數類型不合適,這個調用甚至沒法編譯。對象
若是一個域並無實現Comparable接口,或者你須要一個非標準化的排序關係,就可使用一個顯式的Comparator接口來代替。排序
Collections.sort(Lists, new Comparator<WkInvest>() { @Override public int compare(Object o1, Object o2) { return o1.getId.compareTo(o2.getId()); } });
通常來講,接口
在須要排序時,聲明的類要去實現Comparable接口,這是經常使用的模式。get
public class PhoneNumber implements Comparable<PhoneNumber> { }