Comparable接口与Comparator接口
【Comparable和Comparator源碼】
java.lang.Comparablepublic interface Comparable<T> {public int comparaTo(T o); }------------------------------------------------------------------java.util.Comparatorpublic interface Comparator<T> {int compare(T o1,T o2);boolean equals(Object obj); }【Comparable接口】
1. 若一個類實現了Comparable接口,就意味著該類支持排序。假設存在實現了 Comparable接口的類的對象的List列表(或數組),則該List列表(或數組)可以通過Collections.sort(或Arrays.sort)進行排序。
2.?一個類實現了comparable接口表明這個類的對象之間是可以互相比較的。如果用數學語言描述的話就是這個類的對象組成的集合中存在一個全序。這樣,這個類對象組成的集合就可以使用 Sort 方法排序了。
【Comparator接口】
1. 我們需要控制某個類的次序,而該類不支持排序(即沒有實現Comparable接口)。那么,我們可以創(chuàng)建一個該類的比較器,這個比較器只需要實現Comparator。若一個類實現了Comparator接口,則它一定要實現compare(T o1,T o2)方法,但不一定要實現equals(Object obj)方法;
2.?如果類的設計師沒有考慮到Compare的問題而沒有實現Comparable接口,可以通過Comparator來實現比較算法進行排序;為了使用不同的排序標準做準備,比如:升序、降序
【兩者比較】
1.?前者應該比較固定,和一個具體類相綁定,而后者比較靈活,它可以被用于各個需要比較功能的類使用
2. Comparable是排序接口;若一個類實現了Comparable接口,就意味著“該類支持排序”;而Comparator是比較器;我們若需要控制某個類的次序,可以建立一個“該類的比較器”來進行排序。
3. Comparable相當于“內部比較器”,而Comparator相當于“外部比較器”。
4.?Comparable是通用的接口,用戶可以實現它來完成自己特定的比較,而Comparator可以看成是一種算法的實現,在需要容器集合實現比較功能的時候,來指定這個比較器,這可以看成是一種設計模式,將算法和數據分離。
?
轉載于:https://www.cnblogs.com/hwu2014/p/4479211.html
總結
以上是生活随笔為你收集整理的Comparable接口与Comparator接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pydoc 本地 HTML 形式查看
- 下一篇: Linux (CentOS)增加删除用户