如何使用Java Core API提供的兩個「比較」接口?五分鐘教會

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

在介紹這篇技術文章之前,小編先給大家分享一下,我是一名5年Java開發的程序員現在辭職在家,在此我跟大家說一下,因為最近是在整理,也就從2018初到現在剛剛準備好,一套系統的Java教程(基礎+案例+工具)今天我就給大家分享下我的成果。

如何使用Java Core API提供的兩個“比較”接口?五分鐘教會

1.Comparable

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

如何使用Java Core API提供的兩個“比較”接口?五分鐘教會

如何使用Java Core API提供的兩個“比較”接口?五分鐘教會

輸出:索尼更好。

2.Comparator

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

實現所需的方法是compare()。現在讓我們用另一種方法來比較這些電視的大小。一種常見的用途Comparator是分類。both Collections和Arraysclasses都提供了一個使用a的排序方法Comparator。

如何使用Java Core API提供的兩個“比較”接口?五分鐘教會

如何使用Java Core API提供的兩個“比較”接口?五分鐘教會

輸出:

松下 三星 索尼

通常我們可以使用Collections.reverseOrder()方法來獲得降序比較。如下:

如何使用Java Core API提供的兩個“比較”接口?五分鐘教會

輸出:

[3,1,2] [1,2,3] [3,2,1]

3.何時使用哪個?

簡而言之,實現的類Comparable將具有可比性,這意味著它可以相互比較實例。

實現的類Comparator將主要用於兩種情況:1)它可以傳遞給排序方法,例如Collections.sort()或Arrays.sort(),以允許精確控制排序順序和2)它還可以用於控制某些數據的順序結構,例如有序集(例如TreeSet)或有序映射(例如TreeMap)。

例如,創建一個TreeSet。我們可以將構造函數傳遞給比較器,也可以使對象類具有可比性。

方法1 - TreeSet

如何使用Java Core API提供的兩個“比較”接口?五分鐘教會

方法2 - Comparable

如何使用Java Core API提供的兩個“比較”接口?五分鐘教會

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


分享到:


相關文章: