Comparable&Comparator都是用來實現集合中元素的比較、排序的,只是Comparable是在集合內部定義的方法實現的排序,Comparator是在集合外部實現的排序,所以,如想實現排序,就需要在集合外定義Comparator介面的方法或在集合內實現Comparable介面的方法。Comparator位於包java.util下,而Comparable位於包java.lang下Comparable是一個物件本身就已經支援自比較所需要實現的介面(如String、Integer自己就可以完成比較大小操作,已經實現了Comparable介面)自定義的類要在加入list容器中後能夠排序,可以實現Comparable介面,在用Collections類的sort方法排序時,如果不指定Comparator,那麼就以自然順序排序,如API所說:Sortsthespecifiedlistintoascendingorder,accordingtothenaturalorderingofitselements.AllelementsinthelistmustimplementtheComparableinterface這裡的自然順序就是實現Comparable介面設定的排序方式。而Comparator是一個專用的比較器,當這個物件不支援自比較或者自比較函式不能滿足你的要求時,你可以寫一個比較器來完成兩個物件之間大小的比較。可以說一個是自已完成比較,一個是外部程式實現比較的差別而已。用Comparator是策略模式(strategydesignpattern),就是不改變物件自身,而用一個策略物件(strategyobject)來改變它的行為。
Comparable&Comparator都是用來實現集合中元素的比較、排序的,只是Comparable是在集合內部定義的方法實現的排序,Comparator是在集合外部實現的排序,所以,如想實現排序,就需要在集合外定義Comparator介面的方法或在集合內實現Comparable介面的方法。Comparator位於包java.util下,而Comparable位於包java.lang下Comparable是一個物件本身就已經支援自比較所需要實現的介面(如String、Integer自己就可以完成比較大小操作,已經實現了Comparable介面)自定義的類要在加入list容器中後能夠排序,可以實現Comparable介面,在用Collections類的sort方法排序時,如果不指定Comparator,那麼就以自然順序排序,如API所說:Sortsthespecifiedlistintoascendingorder,accordingtothenaturalorderingofitselements.AllelementsinthelistmustimplementtheComparableinterface這裡的自然順序就是實現Comparable介面設定的排序方式。而Comparator是一個專用的比較器,當這個物件不支援自比較或者自比較函式不能滿足你的要求時,你可以寫一個比較器來完成兩個物件之間大小的比較。可以說一個是自已完成比較,一個是外部程式實現比較的差別而已。用Comparator是策略模式(strategydesignpattern),就是不改變物件自身,而用一個策略物件(strategyobject)來改變它的行為。