最近在做一個對象排序的功能,需要按不同規則排序.看了Arrays,Collections,的sort方法,
了解了Comparator,Comparable兩個接口,找到了適用於自己的排序辦法,下面把自己的
理解和收集到的我認為很經典的解釋整理如下:
comparable是通用的接口,用戶可以實現它來完成自己特定的比較,而comparator可以看成一種算法的實現,在需要容器集合collection需要比較功能的時候,來指定這個比較器,這可以看出一種設計模式,將算法和數據分離,就像C++ STL中的函數對象一樣。
前者應該比較固定,和一個具體類相綁定,而後者比較靈活,它可以被用於各個需要比較功能的類使用。可以說前者屬於“靜態綁定”,而後者可以“動態綁定”。
一個類實現了Camparable接口表明這個類的對象之間是可以相互比較的。如果用數學語言描述的話就是這個類的對象組成的集合中存在一個全序。這樣,這個類對象組成的集合就可以使用Sort方法排序了。
而Comparator的作用有兩個:
1. 如果類的設計師沒有考慮到Compare的問題而沒有實現Comparable接口,可以通過 Comparator來實現比較算法進行排序
2. 為了使用不同的排序標准做准備,比如:升序、降序或其他什麼序