這篇文章給大家介紹Java中Comparable和Comparator接口有什么區別,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創新互聯公司自2013年起,先為互助等服務建站,互助等地企業,進行企業商務咨詢服務。為互助企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
若一個類實現了Comparable接口,就意味著“該類支持排序”。此外,“實現Comparable接口的類的對象”可以用作“有序映射(如TreeMap)”中的鍵或“有序集合(TreeSet)”中的元素,而不需要指定比較器。
接口中通過x.compareTo(y)來比較x和y的大小。若返回負數,意味著x比y小;返回零,意味著x等于y;返回正數,意味著x大于y。
我們若需要控制某個類的次序,而該類本身不支持排序(即沒有實現Comparable接口);那么,我們可以建立一個“該類的比較器”來進行排序。這個“比較器”只需要實現Comparator接口即可。也就是說,我們可以通過“實現Comparator類來新建一個比較器”,然后通過該比較器對類進行排序。
int compare(T o1, T o2)和上面的x.compareTo(y)類似,定義排序規則后返回正數,零和負數分別代表大于,等于和小于。
兩者的聯系
Comparable相當于“內部比較器”,而Comparator相當于“外部比較器”。
代碼實現
package mytest;import java.util.*;/** * @ _ooOoo_ * o8888888o * 88">public class LearnCompare{ public static void main(String[] args){ List<Node> list = new ArrayList<Node>(); list.add(new Node("yguo", 25)); list.add(new Node("msdfj", 22)); list.add(new Node("skf", 20)); list.add(new Node("sfe", 23)); System.out.println("===Age排序外部比較器==="); Collections.sort(list, new Comparator<Node>(){ @Overridepublic int compare(Node o1, Node o2){ return o1.getAge() - o2.getAge();}});for (Iterator<Node> it = list.iterator(); it.hasNext(); ){ System.out.println(it.next());} System.out.println("===Name排序外部比較器===="); Collections.sort(list, new Comparator<Node>(){ @Overridepublic int compare(Node o1, Node o2){ return o1.getName().compareTo(o2.getName());}});for (Iterator<Node> it = list.iterator(); it.hasNext(); ){ System.out.println(it.next());} System.out.println("===Age排序 內部比較器==="); Collections.sort(list);for (Iterator<Node> it = list.iterator(); it.hasNext(); ){ System.out.println(it.next());}}}//class Node implements Comparable<Node>{ private String name;private int age;public Node(String name, int age){ this.name = name;this.age = age;}public String getName(){ return name;}public void setName(String name){ this.name = name;}public int getAge(){ return age;}public void setAge(int age){ this.age = age;}@Overridepublic int compareTo(Node other){ if (age > other.getAge())return -1;if (age < other.getAge())return 1;return 0;}@Overridepublic String toString(){ return "Name " + name + " age " + age;}}
關于Java中Comparable和Comparator接口有什么區別就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
本文題目:Java中Comparable和Comparator接口有什么區別
當前路徑:http://vcdvsql.cn/article38/pdpgsp.html
成都網站建設公司_創新互聯,為您提供網頁設計公司、網站建設、品牌網站建設、網站排名、小程序開發、用戶體驗
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯