本文介紹了Java使用具有多個排序條件的可比對象進行排序的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我最近開始學習Java。我看的是可比性和可比性。我讀到的不同之處之一是”當你有一個分類標準時,使用可比較的接口,而對于多個使用比較器”。
但對于可比性,我也可以使用多種分類標準,如下所示:
class Employee implements Comparable<Employee>{
public int empID;
public int empStartDate;
public int compareTo(Employee empObj){
int result = this.empID - empObj.empID;
if(result == 0){
result = this.empStartDate - empObj.empStartDate;
}
return result;
}
}
我理解他們還有其他不同之處。但我有點糾結于這個區別(單一和多個分類標準)。
如果我說錯了,請糾正我。如果我們可以使用上述方法,為什么推薦單一分類標準使用可比性?有人能舉個例子給我解釋一下嗎?謝謝!
推薦答案
如果我們可以使用上述方法,為什么建議使用
Comparable
單一排序條件?
對此沒有普遍接受的建議。
無論您在哪里閱讀,都是錯誤的。
Comparable
vsComparator
根本不是比較一個或多個值的問題。
一個對象最多可以有一個自然順序。如果是,則使用Comparable
實現該自然順序。它實際上是用Comparable
:
的javadoc編寫的
此接口對實現它的每個類的對象強制進行總排序。這種排序稱為類的自然排序,類的
compareTo
方法稱為其自然比較方法。
無論對象是否具有自然順序,(備選)排序都可以使用Comparator
實現。
兩者都與正在進行的比較的復雜性無關。
無關:
請勿使用整數減法計算compare
/compareTo
結果,因為如果兩個值大于MAX_VALUE
(數值溢出),則計算將失敗。
在比較int
值(從Java 7開始提供)時,始終使用Integer.compare(x, y)
。Long.compare?(x, y)
相同。
這篇關于Java使用具有多個排序條件的可比對象進行排序的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,