Comparable接口和Comparator接口

在實際應(yīng)用中输瓜,我們往往有需要比較兩個自定義對象大小的地方瓦胎。而這些自定義對象的比較芬萍,就不像簡單的整型數(shù)據(jù)那么簡單,它們往往包含有許多的屬性搔啊,我們一般都是根據(jù)這些屬性對自定義對象進(jìn)行比較的柬祠。所以Java中要比較對象的大小或者要對對象的集合進(jìn)行排序,需要通過比較這些對象的某些屬性的大小來確定它們之間的大小關(guān)系负芋。

一般漫蛔,Java中通過接口實現(xiàn)兩個對象的比較,比較常用就是Comparable接口和Comparator接口旧蛾。首先類要實現(xiàn)接口莽龟,并且使用泛型規(guī)定要進(jìn)行比較的對象所屬的類,然后類實現(xiàn)了接口后锨天,還需要實現(xiàn)接口定義的比較方法(compareTo方法或者compare方法)毯盈,在這些方法中傳入需要比較大小的另一個對象,通過選定的成員變量與之比較病袄,如果大于則返回1搂赋,小于返回-1,相等返回0益缠。

一脑奠、Comparable接口

1.什么是Comparable接口

此接口強(qiáng)行對實現(xiàn)它的每個類的對象進(jìn)行整體排序。此排序被稱為該類的自然排序?幅慌,類的compareTo方法被稱為它的自然比較方法?捺信。實現(xiàn)此接口的對象列表(和數(shù)組)可以通過Collections.sort(和Arrays.sort?)進(jìn)行自動排序。實現(xiàn)此接口的對象可以用作有序映射表中的鍵或有序集合中的元素欠痴,無需指定比較器迄靠。

2.實現(xiàn)什么方法

int compareTo(T o)

比較此對象與指定對象的順序。如果該對象小于喇辽、等于或大于指定對象掌挚,則分別返回負(fù)整數(shù)、零或正整數(shù)菩咨。

參數(shù): o - 要比較的對象吠式。

返回:負(fù)整數(shù)、零或正整數(shù)抽米,根據(jù)此對象是小于特占、等于還是大于指定對象。

拋出:ClassCastException - 如果指定對象的類型不允許它與此對象進(jìn)行比較云茸。

3.實例

Java中實現(xiàn)對象的比較:Comparable接口和Comparator接口 - 毛先森 - 博客園

二是目、Comparator接口

與上面的Comparable接口不同的是:

①、Comparator位于包java.util下标捺,而Comparable位于包java.lang下懊纳。

②揉抵、Comparable接口將比較代碼嵌入需要進(jìn)行比較的類的自身代碼中,而Comparator接口在一個獨立的類中實現(xiàn)比較嗤疯。

③冤今、如果前期類的設(shè)計沒有考慮到類的Compare問題而沒有實現(xiàn)Comparable接口,后期可以通過Comparator接口來實現(xiàn)比較算法進(jìn)行排序茂缚,并且為了使用不同的排序標(biāo)準(zhǔn)做準(zhǔn)備戏罢,比如:升序、降序脚囊。

④龟糕、Comparable接口強(qiáng)制進(jìn)行自然排序,而Comparator接口不強(qiáng)制進(jìn)行自然排序凑术,可以指定排序順序。

使用實例:

Java中實現(xiàn)對象的比較:Comparable接口和Comparator接口 - 毛先森 - 博客園

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末所意,一起剝皮案震驚了整個濱河市淮逊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扶踊,老刑警劉巖泄鹏,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異秧耗,居然都是意外死亡备籽,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門分井,熙熙樓的掌柜王于貴愁眉苦臉地迎上來车猬,“玉大人,你說我怎么就攤上這事尺锚≈槿颍” “怎么了?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵瘫辩,是天一觀的道長伏嗜。 經(jīng)常有香客問我,道長伐厌,這世上最難降的妖魔是什么承绸? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮挣轨,結(jié)果婚禮上军熏,老公的妹妹穿的比我還像新娘。我一直安慰自己卷扮,他們只是感情好羞迷,可當(dāng)我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布界轩。 她就那樣靜靜地躺著,像睡著了一般衔瓮。 火紅的嫁衣襯著肌膚如雪浊猾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天热鞍,我揣著相機(jī)與錄音葫慎,去河邊找鬼。 笑死薇宠,一個胖子當(dāng)著我的面吹牛偷办,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播澄港,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼椒涯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了回梧?” 一聲冷哼從身側(cè)響起废岂,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎狱意,沒想到半個月后湖苞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡详囤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年财骨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片藏姐。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡隆箩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出羔杨,到底是詐尸還是另有隱情摘仅,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布问畅,位于F島的核電站娃属,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏护姆。R本人自食惡果不足惜矾端,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卵皂。 院中可真熱鬧秩铆,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至滚粟,卻和暖如春寻仗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凡壤。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工署尤, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人亚侠。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓曹体,卻偏偏與公主長得像,于是被迫代替她去往敵國和親硝烂。 傳聞我的和親對象是個殘疾皇子箕别,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 在此特此聲明:一下所有鏈接均來自互聯(lián)網(wǎng),在此記錄下我的查閱學(xué)習(xí)歷程滞谢,感謝各位原創(chuàng)作者的無私奉獻(xiàn) 串稀! 技術(shù)一點一點積...
    遠(yuǎn)航的移動開發(fā)歷程閱讀 11,145評論 12 197
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,317評論 25 707
  • 閉包是自包含的函數(shù)代碼塊,可以在代碼中被傳遞和使用爹凹。Swift 中的閉包與 C 和 Objective-C 中的代...
    OrangeInce閱讀 169評論 0 0
  • 在季節(jié)的車上厨诸,如果你要提前下車镶殷,請別推醒裝睡的我禾酱,這樣我可以沉睡到終點,假裝不知道你已經(jīng)離開绘趋。 ——張嘉佳《從你的...
    雨山上的梵星閱讀 372評論 0 2
  • 緣于網(wǎng)絡(luò)對《大魚海棠》的炒作陷遮,也緣于從小內(nèi)心對動畫畫面的熱愛滓走,我今天看了《大魚海棠》。 電影大至劇情是:與人類世界...
    冰心茉莉閱讀 305評論 0 0