新聞中心
Comparable

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),日土企業(yè)網(wǎng)站建設(shè),日土品牌網(wǎng)站建設(shè),網(wǎng)站定制,日土網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,日土網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
public interface Comparable該接口對(duì)實(shí)現(xiàn)它的每個(gè)類(lèi)的對(duì)象進(jìn)行了總排序。這種排序稱為類(lèi)的自然排序,類(lèi)的 compareTo 方法稱為其自然比較方法。
實(shí)現(xiàn)此接口的對(duì)象列表(和數(shù)組)可以通過(guò) Collections#sort(List)(和 [Arrays#sort(Object]))自動(dòng)排序。實(shí)現(xiàn)此接口的對(duì)象可以用作 SortedMap 中的鍵或用作 SortedSet 中的元素,而無(wú)需指定 Comparator。
當(dāng)且僅當(dāng) e1.compareTo(e2) == 0 對(duì)于類(lèi) C 的每個(gè) e1 和 e2 具有與 e1.equals(e2) 相同的布爾值時(shí),類(lèi) C 的自然排序被稱為與 equals 一致。注意null 不是任何類(lèi)的實(shí)例,即使 e.equals(null) 返回 false,e.compareTo(null) 也應(yīng)該拋出 NullPointerException。
強(qiáng)烈建議(盡管不是必需的)自然排序與 equals 一致。之所以如此,是因?yàn)闆](méi)有顯式比較器的排序集(和排序映射)在與自然順序與等于不一致的元素(或鍵)一起使用時(shí)表現(xiàn)“奇怪”。特別是,這樣的排序集合(或排序映射)違反了集合(或映射)的一般合同,該合同是根據(jù) equals 方法定義的。
例如,如果添加兩個(gè)鍵 a 和 b 使得 (!a.equals(b) && a.compareTo(b) == 0) 到不使用顯式比較器的排序集,則第二個(gè)添加操作返回 false (并且排序集的大小不會(huì)增加)因?yàn)閺呐判蚣慕嵌葋?lái)看 a 和 b 是等價(jià)的。
幾乎所有實(shí)現(xiàn) Comparable 的 Java 核心類(lèi)都具有與 equals 一致的自然順序。一個(gè)例外是 java.math.BigDecimal,它的自然排序等同于具有相同值和不同精度的 BigDecimal 對(duì)象(例如 4.0 和 4.00)。
對(duì)于數(shù)學(xué)傾向,定義給定類(lèi) C 的自然排序的關(guān)系是:
{(x, y) such that x.compareTo(y) <= 0}. 這個(gè)總訂單的商是:
{(x, y) such that x.compareTo(y) == 0}. 從 compareTo 的約定可以直接得出,商是 C 上的等價(jià)關(guān)系,自然排序是 C 上的全序。當(dāng)我們說(shuō)類(lèi)的自然排序與 equals 一致時(shí),我們的意思是 自然排序是類(lèi)的 Object#equals(Object) 方法定義的等價(jià)關(guān)系:
{(x, y) such that x.equals(y)}. 此接口是 Java 集合框架的成員。
方法總結(jié)
| 修飾符和類(lèi)型 | 方法 | 描述 |
|---|---|---|
| int | compareTo(T o) | 將此對(duì)象與指定對(duì)象進(jìn)行比較以進(jìn)行排序。 |
方法詳情
compareTo
int compareTo(T o)
將此對(duì)象與指定對(duì)象進(jìn)行比較以進(jìn)行排序。返回負(fù)整數(shù)、零或正整數(shù),因?yàn)榇藢?duì)象小于、等于或大于指定對(duì)象。
實(shí)現(xiàn)者必須確保所有 x 和 y 的 sgn(x.compareTo(y)) == -sgn(y.compareTo(x))。 (這意味著如果 y.compareTo(x) 拋出異常,則 x.compareTo(y) 必須拋出異常。)
實(shí)現(xiàn)者還必須確保關(guān)系是可傳遞的:(x.compareTo(y)>0 && y.compareTo(z)>0) 意味著 x.compareTo(z)>0。
最后,實(shí)現(xiàn)者必須確保 x.compareTo(y)==0 意味著 sgn(x.compareTo(z)) == sgn(y.compareTo(z)),對(duì)于所有 z。
強(qiáng)烈建議但不嚴(yán)格要求 (x.compareTo(y)==0) == (x.equals(y))。一般來(lái)說(shuō),任何實(shí)現(xiàn)了 Comparable 接口并違反此條件的類(lèi)都應(yīng)該清楚地表明這一事實(shí)。推薦的語(yǔ)言是“注意:這個(gè)類(lèi)有一個(gè)與equals不一致的自然順序。”
在前面的描述中,符號(hào)sgn(expression)表示數(shù)學(xué)符號(hào)函數(shù),它被定義為根據(jù)表達(dá)式的值是負(fù)數(shù)、零還是正數(shù)返回-1、0或1之一。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| o | the object to be compared. |
返回:
負(fù)整數(shù)、零或正整數(shù),因?yàn)榇藢?duì)象小于、等于或大于指定對(duì)象。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NullPointerException | 如果指定的對(duì)象為空 |
| ClassCastException | 如果指定對(duì)象的類(lèi)型阻止它與此對(duì)象進(jìn)行比較。 |
名稱欄目:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSComparable
文章分享:http://www.dlmjj.cn/article/djcihjd.html


咨詢
建站咨詢
