Comparable和Comparator的区别
生活随笔
收集整理的這篇文章主要介紹了
Comparable和Comparator的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
相同點:
Comparable和Comparator都是接口,用來做對象的比較而達到排序的目的。
不同點:
Comparable需要類本身實現它,并重寫compareTo方法,參數為另外一個同類的對象,排序的時候使用Collections.sort(Collection cl),通常是在項目中自定義的類,特別是后期需要排序的類。
package collections;public class Person implements Comparable<Person> {private int age;private String name;public Person(String name, int age){this.name = name;this.age = age;}@Overridepublic int compareTo(Person o){return this.age-o.age;}@Override public String toString(){return name+":"+age;} }?
Person person1 = new Person("AA",17);Person person2 = new Person("BB",18);Person person3 = new Person("CC",19);List<Person> list = new ArrayList<>();list.add(person1);list.add(person2);list.add(person3);Collections.sort(list);Comparator是需要獨立的類來實現它,并重寫compare和equals方法,通常是用在無法繼承或者更改的類情況,使用Collections.sort(Collection cl,Comparator cp)進行排序
Person p1 = new Person("AA",18);Person p2 = new Person("BB",17);Person p3 = new Person("CC",19);List<Person> list = new ArrayList<Person>();list.add(p1);list.add(p2);list.add(p3);Collections.sort(list,new Comparator<Person>(){@Overridepublic int compare(Person o1, Person o2){if(o1 == null || o2 == null)return 0;return o1.getAge()-o2.getAge();}});在《Effective Java》一書中,作者Joshua Bloch推薦大家在編寫自定義類的時候盡可能的考慮實現一下Comparable接口,一旦實現了Comparable接口,它就可以跟許多泛型算法以及依賴于改接口的集合實現進行協作。你付出很小的努力就可以獲得非常強大的功能
轉載于:https://my.oschina.net/u/3049601/blog/1556226
總結
以上是生活随笔為你收集整理的Comparable和Comparator的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vivo你终于醒了 vivo官宣数字车钥
- 下一篇: Buffered缓存流