Java Comparable 和 Comparator 介面詳解
阿新 • • 發佈:2020-09-25
> 本文基於 JDK8 分析
## Comparable Comparable 介面位於 java.lang 包下,Comparable 介面下有一個 compareTo 方法,稱為自然比較方法。一個類只要實現了這個介面,意味著該類支援自然排序 所謂自然排序,就是按預設規則組成的排序,例如 1234 就是自然排序,因為 2 就是比 1 大,這是預設規定的。類比到 Comparable,我們在 compareTo 中定義自己需要的預設比較規則,以後如果用到 Collections.sort 和 Arrays.sort 方法排序,或者是作為 SortedSet、SortedMap 等元件的元素,就可以按照我們想要的規則排序了 比較的物件不應該出現 null,因為 null 不屬於任何類的例項。如果出現了 e.compareTo(null) 這種情況,應該丟擲 NullPointerException
## Comparator 的使用 自定義一個 User 實體類 ```java public class User { private Integer id; private Integer age; // 構造方法和 set/get 方法省略 ... } ``` 自定義比較器 ```java class AgeComparator implements Comparator
## Comparator 中常用的預設方法 相比於 Comparable,Comparator 提供了更多預設方法和靜態方法,功能更加強大 - reversed 返回一個比較器,是原比較器的逆序(沒有實現則是自然排序),底層使用 Collections 的 reverseOrder 方法實現 ```java default Comparator