1. 程式人生 > >比較接口:Comparable和Comparator

比較接口:Comparable和Comparator

通過 進行 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