日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解java Collections.sort的兩種用法

瀏覽:19日期:2022-08-29 13:22:09

Collections是一個工具類,sort是其中的靜態方法,是用來對List類型進行排序的,它有兩種參數形式:

public static <T extends Comparable<? super T>> void sort(List<T> list) { list.sort(null); }

public static <T> void sort(List<T> list, Comparator<? super T> c) { list.sort(c); }

首先使用基本類型(此處使用Integer)來演示第一個方法:

static List<Integer> intList = Arrays.asList(2, 3, 1);

private static void sortBaseTypeByDefaultMode() { System.out.println('before sort:'); PrintUtil.showList(intList); System.out.println('========================='); Collections.sort(intList); System.out.println('after sort:'); PrintUtil.showList(intList); }

PrintUtil.showList是自定義的一個打印List類型的方法,此處只關心輸出結果就行,如下:

詳解java Collections.sort的兩種用法

可以看到,默認的排序是正序,那么如何實現逆序呢,這就要使用第二種方式了,即通過實現Comparator接口的compare方法來完成自定義排序,代碼如下:

private static void sortBaseTypeByIDefineMode() { System.out.println('before sort:'); PrintUtil.showList(intList); System.out.println('========================='); Collections.sort(intList,new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) {// 返回值為int類型,大于0表示正序,小于0表示逆序return o2-o1; } }); System.out.println('after sort:'); PrintUtil.showList(intList); }

詳解java Collections.sort的兩種用法

可以看到,已經實現了逆序的排序了。

接下來看看自定義類的排序:

定義一個Emp類:

public class Emp{ private int empno; private String ename; public int getEmpno() { return empno; } public void setEmpno(int empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public Emp(int empno, String ename) { super(); this.empno = empno; this.ename = ename; } @Override public String toString() { return 'empno:t'+empno+'tename:t'+ename; }}

首先使用同樣的方式來使用Collections.sort方法:

定義泛型違Emp類型的List:

static List<Emp> empList; static { Emp emp1 = new Emp(2,'Guan YunChang'); Emp emp2 = new Emp(3,'Zhang Fei'); Emp emp3 = new Emp(1,'Liu Bei'); empList = Arrays.asList(emp1,emp2,emp3); }

對empList進行排序:

詳解java Collections.sort的兩種用法

此時會報錯:

The method sort(List<T>) in the type Collections is not applicable for the arguments (List<Emp>)

意思是參數類型為List<Emp>時,sort方法無法執行,原因是泛型沒有繼承Comparable接口,這種方式稍后再說,我們先使用sort方法的第二種形式:

private static void sortEmpByIDefineMode() { System.out.println('before sort:'); PrintUtil.showList(empList); System.out.println('========================='); Collections.sort(empList,new Comparator<Emp>() { @Override public int compare(Emp o1, Emp o2) {/*按員工編號正序排序*/return o1.getEmpno()-o2.getEmpno();/*按員工編號逆序排序*///return o2.getEmpno()-o1.getEmpno();/*按員工姓名正序排序*///return o1.getEname().compareTo(o2.getEname());/*按員工姓名逆序排序*///return o2.getEname().compareTo(o1.getEname()); } }); System.out.println('after sort:'); PrintUtil.showList(empList); }

運行結果:

詳解java Collections.sort的兩種用法

根據不同的排序方式即可呈現不同的結果。

接下來看看第一種形式的實現,首先讓Emp類繼承Comparable接口并重寫compareTo方法(為了和上面的排序方式區別開,此次按照員工姓名逆序排列):

public class Emp implements Comparable<Emp>{ /*屬性、getter/setter方法、toString方法及構造方法略*/ @Override public int compareTo(Emp emp) { /*按員工編號正序排序*/ //return this.getEmpno()-emp.getEmpno(); /*按員工編號逆序排序*/ //return emp.getEmpno()-this.getEmpno(); /*按員工姓名正序排序*/ //return this.getEname().compareTo(emp.getEname()); /*按員工姓名逆序排序*/ return emp.getEname().compareTo(this.getEname()); }}

使用Collections.sor方法的第一種形式實現:

private static void sortEmpByDefaultMode() { System.out.println('before sort:'); PrintUtil.showList(empList); System.out.println('========================='); Collections.sort(empList); System.out.println('after sort:'); PrintUtil.showList(empList); }

運行結果:

詳解java Collections.sort的兩種用法

總結:

1.對于String或Integer這些已經實現Comparable接口的類來說,可以直接使用Collections.sort方法傳入list參數來實現默認方式(正序)排序;

2.如果不想使用默認方式(正序)排序,可以通過Collections.sort傳入第二個參數類型為Comparator來自定義排序規則;

3.對于自定義類型(如本例子中的Emp),如果想使用Collections.sort的方式一進行排序,可以通過實現Comparable接口的compareTo方法來進行,如果不實現,則參考第2點;

4.jdk1.8的Comparator接口有很多新增方法,其中有個reversed()方法比較實用,是用來切換正序和逆序的,代碼如下:

private static void sortEmpByIDefineMode() { System.out.println('before sort:'); PrintUtil.showList(empList); System.out.println('========================='); Comparator<Emp> comparator = new Comparator<Emp>() { @Override public int compare(Emp o1, Emp o2) {/*按員工編號正序排序*/return o1.getEmpno()-o2.getEmpno();/*按員工編號逆序排序*///return o2.getEmpno()-o1.getEmpno();/*按員工姓名正序排序*///return o1.getEname().compareTo(o2.getEname());/*按員工姓名逆序排序*///return o2.getEname().compareTo(o1.getEname()); } };/*新的逆序實現方式*/ Collections.sort(empList,comparator.reversed()); System.out.println('after sort:'); PrintUtil.showList(empList); }

復寫的compare方法定義的是按員工編號正序排序,在使用reversed翻轉后結果如下:

詳解java Collections.sort的兩種用法

這樣就使得排序規則的切換更為方便了。

到此這篇關于詳解java Collections.sort的兩種用法的文章就介紹到這了,更多相關java Collections.sort用法內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
岛国av在线网站| 亚洲啊v在线| 天堂网av成人| 麻豆一区在线| 麻豆精品在线观看| 欧美激情日韩| 久久精品人人| 樱桃视频成人在线观看| 成人国产精品一区二区免费麻豆| 久久亚洲黄色| 黄毛片在线观看| 亚洲午夜精品久久久久久app| 亚洲电影在线| 亚洲一区日韩| 91欧美日韩在线| 麻豆高清免费国产一区| 国产v日韩v欧美v| 欧美精品高清| 国产在线日韩| 久久国产精品毛片| 日韩成人一级| 国产成人精品一区二区三区在线| 偷拍精品精品一区二区三区| 黄色不卡一区| 日韩一区二区三区在线看| 久久99影视| 久久国产免费| 日韩精品一二三| 国产精品手机在线播放| 日韩成人三级| 男人的天堂亚洲一区| 亚洲青青久久| 欧美精品91| 欧美成人基地| 亚洲一二三区视频| 国产美女久久| 日韩精品午夜| 日韩欧美高清一区二区三区| 欧美国产极品| 亚洲精品一区二区在线看| 日本久久一区| 麻豆mv在线观看| 免费日韩视频| 捆绑调教美女网站视频一区| 欧美搞黄网站| 国产欧美日韩精品高清二区综合区| 国产高潮在线| 日韩欧美中文在线观看| 久久天堂影院| 久久xxxx| 国产一区调教| 日韩在线卡一卡二| 中文字幕在线视频久| 亚洲丝袜美腿一区| 国产精品毛片一区二区在线看| 香蕉视频成人在线观看| 动漫av一区| 少妇精品久久久| 日韩精品专区| 91嫩草精品| 欧美女激情福利| 麻豆精品一区二区综合av| 国产精品美女久久久| 国产欧美高清| 伊人精品视频| 精品亚洲精品| 亚洲一级大片| 天堂网av成人| 欧美黄色精品| 日本成人在线一区| 国内亚洲精品| 久久亚洲精品中文字幕| 亚洲综合激情在线| 亚洲a在线视频| 欧美视频二区| 日韩一级精品| 国产精品久久久久久久免费观看| 亚洲精品四区| 色婷婷狠狠五月综合天色拍| 国产精品成人自拍| 一区二区三区四区在线观看国产日韩| 久久男人天堂| 国产日产一区| 亚洲精品日本| 国产视频久久| 999久久久91| 国产一区调教| 欧美黑人做爰爽爽爽| 91嫩草精品| 亚洲一级大片| 国产亚洲精品自拍| 日韩在线高清| 国产一区二区三区国产精品| 日韩国产欧美三级| 亚洲伊人影院| 国产亚洲精品v| 亚洲激情中文在线| 私拍精品福利视频在线一区| 美女av在线免费看| 国内一区二区三区| 久久av影视| 国产精品一国产精品k频道56| 亚洲一区二区三区在线免费| 国产精品91一区二区三区| 亚洲电影有码| 日韩不卡视频在线观看| 国产传媒在线| 亚洲风情在线资源| 久久中文字幕导航| 国产福利资源一区| 国产亚洲精品美女久久| 日韩高清在线不卡| 亚洲精品一二| 日韩综合小视频| 日韩精品中文字幕吗一区二区 | 日韩成人a**站| 久久精品国产福利| 麻豆精品av| 成人在线免费观看网站| 老色鬼精品视频在线观看播放| 91亚洲无吗| 国产日韩欧美中文在线| 国产精品久久久网站| 国产精品成人自拍| 国语对白精品一区二区| 国产成人精品一区二区三区免费 | 韩国精品主播一区二区在线观看 | 国产精品nxnn| 国产精品15p| 精品国产美女a久久9999| 国产一区二区亚洲| 日韩理论视频| 欧美肉体xxxx裸体137大胆| 999精品一区| 在线亚洲精品| 亚洲精品福利| 欧美日韩伊人| 另类综合日韩欧美亚洲| a日韩av网址| 欧美日韩色图| 国产精品日韩久久久| 久热精品在线| 日本午夜精品| 精品视频黄色| 色爱综合av| 亚洲在线成人| 日韩欧美另类中文字幕| 久久不卡国产精品一区二区| 日韩av片子| 亚洲精品网址| 日本不卡不码高清免费观看| 日本aⅴ免费视频一区二区三区| 国产精品探花在线观看| 亚洲免费福利| 亚洲一区国产| 日韩av在线免费观看不卡| 国产日本久久| 色欧美自拍视频| 成人av动漫在线观看| 中文字幕视频精品一区二区三区| 国产日韩欧美三级| 日韩一区二区三区免费播放| aa国产精品| 欧美一区不卡| 亚洲综合电影| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品xxx在线观看| 四虎4545www国产精品 | 久久99国产精品视频| 中文另类视频| 在线国产日韩| 日本欧美国产| 玖玖精品视频| 美女在线视频一区| 国产精品97| 国产免费av国片精品草莓男男| 四虎4545www国产精品 | 久久精品超碰| 久久久久美女| 日韩精品1区2区3区| 福利一区二区三区视频在线观看| 伊人影院久久| 麻豆中文一区二区| 亚洲欧美日韩精品一区二区| 麻豆精品视频在线| 视频一区二区中文字幕| 国产一区二区亚洲| 亚洲毛片网站| 中文字幕色婷婷在线视频| 中文字幕日韩欧美精品高清在线| 国产传媒在线观看| 欧美一级网址| 黄色日韩精品| 精品理论电影在线| 日韩影院免费视频| 日韩欧美另类一区二区| 日韩激情中文字幕| 蜜臀久久99精品久久一区二区 | 久久精选视频| 久久超级碰碰|