W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
public interface Comparable<T>
該接口對實現(xiàn)它的每個類的對象進行了總排序。這種排序稱為類的自然排序,類的 compareTo 方法稱為其自然比較方法。
實現(xiàn)此接口的對象列表(和數(shù)組)可以通過 Collections#sort(List)(和 [Arrays#sort(Object]))自動排序。實現(xiàn)此接口的對象可以用作 SortedMap 中的鍵或用作 SortedSet 中的元素,而無需指定 Comparator。
當且僅當 e1.compareTo(e2) == 0 對于類 C 的每個 e1 和 e2 具有與 e1.equals(e2) 相同的布爾值時,類 C 的自然排序被稱為與 equals 一致。注意null 不是任何類的實例,即使 e.equals(null) 返回 false,e.compareTo(null) 也應該拋出 NullPointerException。
強烈建議(盡管不是必需的)自然排序與 equals 一致。之所以如此,是因為沒有顯式比較器的排序集(和排序映射)在與自然順序與等于不一致的元素(或鍵)一起使用時表現(xiàn)“奇怪”。特別是,這樣的排序集合(或排序映射)違反了集合(或映射)的一般合同,該合同是根據(jù) equals 方法定義的。
例如,如果添加兩個鍵 a 和 b 使得 (!a.equals(b) && a.compareTo(b) == 0) 到不使用顯式比較器的排序集,則第二個添加操作返回 false (并且排序集的大小不會增加)因為從排序集的角度來看 a 和 b 是等價的。
幾乎所有實現(xiàn) Comparable 的 Java 核心類都具有與 equals 一致的自然順序。一個例外是 java.math.BigDecimal,它的自然排序等同于具有相同值和不同精度的 BigDecimal 對象(例如 4.0 和 4.00)。
對于數(shù)學傾向,定義給定類 C 的自然排序的關系是:
{(x, y) such that x.compareTo(y) <= 0}.
這個總訂單的商是:
{(x, y) such that x.compareTo(y) == 0}.
從 compareTo 的約定可以直接得出,商是 C 上的等價關系,自然排序是 C 上的全序。當我們說類的自然排序與 equals 一致時,我們的意思是 自然排序是類的 Object#equals(Object) 方法定義的等價關系:
{(x, y) such that x.equals(y)}.
此接口是 Java 集合框架的成員。
修飾符和類型 | 方法 | 描述 |
---|---|---|
int | compareTo(T o) | 將此對象與指定對象進行比較以進行排序。 |
int compareTo(T o)
將此對象與指定對象進行比較以進行排序。返回負整數(shù)、零或正整數(shù),因為此對象小于、等于或大于指定對象。
實現(xiàn)者必須確保所有 x 和 y 的 sgn(x.compareTo(y)) == -sgn(y.compareTo(x))。 (這意味著如果 y.compareTo(x) 拋出異常,則 x.compareTo(y) 必須拋出異常。)
實現(xiàn)者還必須確保關系是可傳遞的:(x.compareTo(y)>0 && y.compareTo(z)>0) 意味著 x.compareTo(z)>0。
最后,實現(xiàn)者必須確保 x.compareTo(y)==0 意味著 sgn(x.compareTo(z)) == sgn(y.compareTo(z)),對于所有 z。
強烈建議但不嚴格要求 (x.compareTo(y)==0) == (x.equals(y))。一般來說,任何實現(xiàn)了 Comparable 接口并違反此條件的類都應該清楚地表明這一事實。推薦的語言是“注意:這個類有一個與equals不一致的自然順序。”
在前面的描述中,符號sgn(expression)表示數(shù)學符號函數(shù),它被定義為根據(jù)表達式的值是負數(shù)、零還是正數(shù)返回-1、0或1之一。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
o | the object to be compared. |
返回:
負整數(shù)、零或正整數(shù),因為此對象小于、等于或大于指定對象。
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | 如果指定的對象為空 |
ClassCastException | 如果指定對象的類型阻止它與此對象進行比較。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: