1. 程式人生 > >#兩分鐘學會使用Java Core API提供的兩個“比較”介面

#兩分鐘學會使用Java Core API提供的兩個“比較”介面

Comparable和Comparator是Java Core API提供的兩個介面。從它們的名字,我們可以告訴他們可能用於以某種方式比較東西。但究竟是什麼,它們之間有什麼區別?以下是回答此問題的兩個示例。這些簡單的例子比較了兩個HDTV的尺寸。閱讀程式碼後,如何使用Comparable vs Comparator是顯而易見的。

如果有想學習java的程式設計師,可來我們的java學習扣qun:943111692,免費送java的視訊教程噢!我整理了一份適合18年學習的java乾貨,送給每一位想學的小夥伴,並且每天晚上8點還會在群內直播講解Java知識,歡迎大家前來學習哦。

1.Comparable

Comparable由類實現,以便能夠將自身的物件與其他一些物件進行比較。類本身必須實現接口才能比較其例項。實現所需的方法是compareTo()。這是一個例子:

輸出:索尼更好。

2.Comparator

在某些情況下,你可能不希望更改類並使其具有可比性。在這種情況下,Comparator如果要基於某些屬性/欄位比較物件,則可以使用。例如,可以根據“高度”或“年齡”等對2個人進行比較(使用可比較的方法無法做到這一點。)

實現所需的方法是compare()。現在讓我們用另一種方法來比較這些電視的大小。一種常見的用途Comparator是分類。both Collections和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

這篇文章到這裡就結束了,大家對本次知識點是否理解了呢?如果有疑問或者指教請在評論中提出大家一起解決。