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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java积累(一)------后端---Comparator比较器的用法

發布時間:2024/3/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java积累(一)------后端---Comparator比较器的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.



對數組或者List列表,或者Map(非hash)等排序是我們經常使用的一種處理數據的手段。Comparator接口是java中很方便的一個接口。

我們只需要重寫compare方法即可實現排序。

int compare(Object o1, Object o2) 返回一個基本類型的整型
如果要按照升序排序,
則o1 小于o2,返回-1(負數),相等返回0,01大于02返回1(正數)
如果要按照降序排序
則o1 小于o2,返回1(正數),相等返回0,01大于02返回-1(負數)



使用步驟

新建比較器并重寫compare方法

Comparator<User> comp=new Comparator<User>(){//升序public int compare(User o1,User o2){if(o1.getAge()>o2.getAge()){return 1;}else if(o1.getAge()==o2.getAge()){return 0;}else{return -1;} } };

也可以新建內部類或者外部類如下:

public class UserAgeComparator implements Comparator<User> { //升序public int compare(User o1,User o2){if(o1.getAge()>o2.getAge()){return 1;}else if(o1.getAge()==o2.getAge()){return 0;}else{return -1;} }}

使用比較器

Collections.sort(users,comp); Collections.reverse(users);//反轉排序 如果是類的的話需要先實例化再使用

UserAgeCompartor mc = new UserAgeCompartor ();Collections.sort(list, mc);



自定義比較器----文本比較

上述的使用方法已經能夠滿足大部分的使用場景。只需要我們處理compare函數中的比較邏輯即可。(包括數組,字符串長度,時間等的比較都能滿足)。

但是如果要比較文本內容的話,還是自定義比較器規則會方便一些。使用步驟也是一樣的,只是在compare方法中我們需要定義一個規則器。


package com.test; ?import java.text.ParseException; ? import java.text.RuleBasedCollator; ? import java.util.Comparator; ? import com.test.domain.User; ?public class UserNameComparator implements Comparator<User> { ?@Override ?public int compare(User o1, User o2) { ?String myrule = "<王<趙<李<張"; ??RuleBasedCollator myrulecollato = null; ?try { ?myrulecollato = new RuleBasedCollator(myrule); ?} catch (ParseException e) { ?e.printStackTrace(); ?} ?return myrulecollato.compare(o1.getUsername(), o2.getUsername()); ?} ? } ?
這里 "王<趙<李<張" 就是我們規定的文本內容排序規則,這樣的話 有王字的就會排在前面了。如果出現文本模糊匹配不準確的出來的排序不準確的話,只需要把全名寫上就能準確排序了,比如"王五<趙六<李四<張三" ?






如果需要了解原理的話 建議查看這兩篇。

List的sort中的Comparator的使用和原理

JDK 源代碼閱讀之 TimSort







總結

以上是生活随笔為你收集整理的java积累(一)------后端---Comparator比较器的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

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