亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中Comparable和Comparator接口有什么區別

發布時間:2021-06-30 17:58:14 來源:億速云 閱讀:158 作者:Leah 欄目:大數據

這篇文章給大家介紹Java中Comparable和Comparator接口有什么區別,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Comparable 簡介

Comparable 是排序接口

若一個類實現了Comparable接口,就意味著“該類支持排序”。此外,“實現Comparable接口的類的對象”可以用作“有序映射(如TreeMap)”中的鍵或“有序集合(TreeSet)”中的元素,而不需要指定比較器。
接口中通過x.compareTo(y)來比較x和y的大小。若返回負數,意味著x比y小;返回零,意味著x等于y;返回正數,意味著x大于y。

Comparator 是比較器接口

我們若需要控制某個類的次序,而該類本身不支持排序(即沒有實現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接口有什么區別就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

墨玉县| 洱源县| 平潭县| 桂阳县| 周宁县| 于田县| 尼玛县| 桐庐县| 乐安县| 长海县| 兰溪市| 丹寨县| 北京市| 吉木萨尔县| 毕节市| 泽普县| 崇明县| 万源市| 高州市| 勐海县| 碌曲县| 资中县| 崇阳县| 津市市| 襄城县| 霞浦县| 洛扎县| 茌平县| 静海县| 丰都县| 武城县| 樟树市| 比如县| 和静县| 巫山县| 蒙城县| 姚安县| 桓仁| 牡丹江市| 西乌珠穆沁旗| 军事|