比較接口:Comparable和Comparator
阿新 • • 發佈:2018-03-14
通過 進行 public 其中 pan 一個 有一個 size 操作
Comparable和Comparator是兩個用於定義對象之間比較規則的接口。
一、public interface Comparator<T>
Comparator接口中有兩個方法(不止兩個):
1、int compare(Object obj1,Object obj2)
obj1>obj2,返回正值;
obj1=obj2,返回0;
obj1<obj2,返回負值。
通過重寫compare()方法,可以改變對象排序的方式。
2、boolean equals(Object obj)
拿obj和調用該方法的對象按規則比較,相同返回true,不同返回false。
二、public interface Comparable<T>
其中只有一個方法:int compareTo(T o)
當需要讓集合對其中的對象進行排序時,可以讓對象實現(也必須實現)Comparable接口,這意味著通過compareTo()定義比較規則。
三、比較
Comparable接口是一種侵入式的設計,即他必須讓被排序的類中實現compareTo()方法。如果一個類是第三方提供的,此時是無法通過Comparable接口進行對象排序操作的。
為了解決這一問題,必須使用比較器Comparator。
集合類可以通過比較器來精確定義按照何種規則排序,Comparator可以讓代碼不入侵類的內部定義排序規則。
顯然,比較器Comparator比Comparable接口更加靈活,不入侵類,更符合單一職責的設計哲學。
當有了新的比較方式,只需要修改比較規則類,即實現Comparator接口的類。
比較接口:Comparable和Comparator