2014-03-27 67 views

回答

0

Comparable定義了類的實例具有自然順序,例如,可以從小到大排列的數字。在其他情況下,這定義了默認排序,例如當使用字符串。

另一方面,Comparator是一個可能定義非標準排序的對象,例如,您可以提供一個比較器來對數字從大到小進行排序。

4

可比較的接口:要被排序的對象必須實現此接口的類。在此,我們必須實現compareTo(Object)方法。

,例如:

public class State implements Comparable{ 
    @Override 
    public int compareTo(Object arg0) { 
     State state=(State) arg0; 
     return (this.stateId < state.stateId) ? -1: (this.stateId > state.stateId) ? 1:0 ; 
}} 

如果任何類實現可比inteface那麼那個對象的集合能自動使用Collection.sort()或Arrays.sort進行排序()對象將被排序的基礎上該類中的compareTo方法。

在java中實現Comparable的對象可以用作SortSetMap中的鍵,例如TreeSet或SortSetSet,就像TreeSet一樣,無需實現任何其他接口。

比較接口:其中需要排序的對象不需要實現此接口的類。有些第三類可以實現此接口來排序..e.g.StateSortByIdComparator類可以實現Comparator接口,通過id對狀態對象的集合進行排序。例如:

public class StateSortByIdComparator implements Comparator<State>{ 

    @Override 
    public int compare(State state1, State state2) { 

     return (state1.getStateId() < state2.getStateId()) ? -1: (state1.getStateId() > state2.getStateId()) ? 1:0 ; 
    } 

}