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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java比较器之Comparable接口与Comparator接口的使用

發布時間:2025/3/17 java 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java比较器之Comparable接口与Comparator接口的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 在java中經常會涉及到對象數組的排序問題,便涉及到對象之間的比較問題。

  • java實現對象排序的方式有兩種:
    自然排序:java.lang.Comparable;
    定制排序:java.util.Comparator;

  • java.lang.Comparable接口:自然排序

1.像String、包裝類等實現了Comparable接口,重寫了compareTo(obj)方法,給出了比較兩個對象大小的方法;
2.像String、包裝類等重寫了compareTo()方法以后,進行了從小到大的排列
3.重寫compareTo(obj)規則:
如果當前對象this大于形參對象obj,則返回正整數,
如果小于,返回負數
如果等于,返回0
4.對于自定義類,如果需要排序,可以讓自定義類實現comparable接口,重寫compareTo(obj),在compareTo(obj)方法中指明如何排序

@Testpublic void test1(){String[] arr = new String[]{"AA","BB","EE","GG","II","DD","CC"};Arrays.sort(arr);System.out.println(Arrays.toString(arr));//String重寫了CompareTo()
  • java.until.Comparator:定制排序

1.當元素的類 型沒有實現java.lang.Comparable接口而又不方便修改代碼,
或者實現了java.lang.Comparable接口的排序規則不適合當前的操作,
那么可以考慮使用Comparator的對象來序,強行對多個對象進行整體排序的比較。
2.重寫compare(Object o1,Object o2)方法,比較o1和o2的大小: 如果方法返回正整數,則表示01大于o2;
如果返回負整數,表示o1小于o2;
如果返回0,表示相等。
3.可以將Comparator傳遞給sort方法(如Collections sort或Arrays.sort) ,從而允許在排序順序上實現精確控制。
4.還可以使用Comparator來控制某些數據結構(如有序set或有序映射)的順序,或者為那些沒有自然順序的對象collection 提供排序。

@Testpublic void test3(){String[] arr = new String[]{"AA","BB","EE","GG","II","DD","CC"};Arrays.sort(arr,new Comparator(){ // 按照字符串從大到小的順序排列@Overridepublic int compare(Object o1, Object o2) {if(o1 instanceof String && o2 instanceof String){String s1 = (String)o1;String s2 = (String)o2;return -s1.compareTo(s2);//從大到小} // return 0;throw new RuntimeException("輸入的數據類型不一致");}});//實現類的對象只用一次System.out.println(Arrays.toString(arr));}

總結

以上是生活随笔為你收集整理的Java比较器之Comparable接口与Comparator接口的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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