日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Comparable和Comparator的区别

發布時間:2023/12/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。