更新時間:2019-09-04 10:14:11 來源:動力節點 瀏覽1916次
Comparable和Comparator是JavaCoreAPI提供的兩個接口。從它們的名字,我們可以告訴他們可能用于以某種方式比較東西。但究竟是什么,它們之間有什么區別?以下是回答此問題的兩個示例。這些簡單的例子比較了兩個HDTV的尺寸。閱讀代碼后,如何使用ComparablevsComparator是顯而易見的。
1.Comparable
Comparable由類實現,以便能夠將自身的對象與其他一些對象進行比較。類本身必須實現接口才能比較其實例。實現所需的方法是compareTo。這是一個例子:
輸出:索尼更好。
2.Comparator
在某些情況下,你可能不希望更改類并使其具有可比性。在這種情況下,Comparator如果要基于某些屬性/字段比較對象,則可以使用。例如,可以根據“高度”或“年齡”等對2個人進行比較(使用可比較的方法無法做到這一點。)
實現所需的方法是compare。現在讓我們用另一種方法來比較這些電視的大小。一種常見的用途Comparator是分類。bothCollections和Arraysclasses都提供了一個使用a的排序方法Comparator。
輸出:
松下三星索尼
通常我們可以使用Collections.reverseOrder方法來獲得降序比較。如下:
輸出:
[3,1,2][1,2,3][3,2,1]
3.何時使用哪個接口?
簡而言之,實現Comparable的類將具有可比性,這意味著它可以相互比較實例。
實現Comparator的類將主要用于兩種情況:1)它可以傳遞給排序方法,例如Collections.sort或Arrays.sort,以允許精確控制排序順序和2)它還可以用于控制某些數據的順序結構,例如有序集(例如TreeSet)或有序映射(例如TreeMap)。
例如,創建一個TreeSet。我們可以將構造函數傳遞給比較器,也可以使對象類具有可比性。
方法1-TreeSet
方法2-Comparable
這篇文章到這里就結束了,大家對本次知識點是否理解了呢?如果有疑問可以登錄“動力節點IT培訓官網”咨詢在線客服老師哦。
相關閱讀
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習