Comparator,Comparable介面區別

來源:互聯網
上載者:User

最近在做一個對象排序的功能,需要按不同規則排序.看了Arrays,Collections,的sort方法,

瞭解了Comparator,Comparable兩個介面,找到了適用於自己的排序辦法,下面把自己的

理解和收集到的我認為很經典的解釋整理如下:

comparable是通用的介面,使用者可以實現它來完成自己特定的比較,而comparator可以看成一種演算法的實現,在需要容器集合collection需要比較功能的時候,來指定這個比較子,這可以看出一種設計模式,將演算法和資料分離,就像C++ STL中的函數對象一樣。

前者應該比較固定,和一個具體類相綁定,而後者比較靈活,它可以被用於各個需要比較功能的類使用。可以說前者屬於“靜態繫結”,而後者可以“動態綁定”。

一個類實現了Camparable介面表明這個類的對象之間是可以相互比較的。如果用數學語言描述的話就是這個類的對象組成的集合中存在一個全序。這樣,這個類對象組成的集合就可以使用Sort方法排序了。

而Comparator的作用有兩個:

1. 如果類的設計師沒有考慮到Compare的問題而沒有實現Comparable介面,可以通過 Comparator來實現比較演算法進行排序

2. 為了使用不同的排序標準做準備,比如:升序、降序或其他什麼序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.