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

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

詳解java Collections.sort的兩種用法

瀏覽:20日期: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久久,三上悠亚国产精品一区二区三区
国产精品视频首页| 97成人在线| 久久久久亚洲精品中文字幕| 国产欧美一级| 国产精品mm| 粉嫩av一区二区三区四区五区| 精品国产精品久久一区免费式| 精品日韩一区| 国产粉嫩在线观看| 最新中文字幕在线播放| 日韩在线免费| 美女网站一区| 久久成人亚洲| 日本在线成人| 亚洲一区av| 91av一区| 精品亚洲成人| 免费精品国产的网站免费观看| 亚洲免费高清| 日本一区福利在线| 免费亚洲一区| 日韩av免费| 欧美一区=区| 日本欧美韩国一区三区| 国产精品宾馆| 欧洲一级精品| 视频一区在线播放| 国产欧美一区二区三区米奇| 国产在线不卡一区二区三区| www.com.cn成人| 亚洲激情不卡| 欧美久久亚洲| 日韩一区二区在线免费| 国产亚洲精品v| 久久国产麻豆精品| 欧美好骚综合网| 女主播福利一区| 青青伊人久久| 日韩一区二区三区免费| 水蜜桃久久夜色精品一区的特点 | 日韩午夜一区| 亚洲精品成人一区| 久久精品伊人| 国产韩日影视精品| 青青草91视频| 日韩精品诱惑一区?区三区| 九九久久婷婷| 欧美日本二区| 久久激情婷婷| 欧美一区激情| 午夜av成人| 亚洲精品福利| 日韩大片在线| 亚州av一区| 偷拍精品精品一区二区三区| 亚洲婷婷丁香| 福利一区二区三区视频在线观看| 亚洲国产一区二区三区在线播放| 欧美日韩一视频区二区| 蜜桃成人av| 欧美激情一区| 亚洲一区激情| 日产午夜精品一线二线三线| 蜜臀久久久久久久| 国产精品成人a在线观看| 久久亚洲一区| 日韩深夜视频| 久久精品72免费观看| jiujiure精品视频播放| 国产精品1区在线| 亚洲少妇在线| 国产一区二区三区网| 中文视频一区| 日韩欧美看国产| 欧美日韩一视频区二区| 99亚洲精品| 成人一区不卡| 欧美日韩国产一区二区在线观看| 狠狠爱www人成狠狠爱综合网| 久久久亚洲欧洲日产| 一区二区91| 国产专区一区| 国产一区二区久久久久| 日韩精品久久久久久久软件91| 欧美日韩在线网站| 国产在视频一区二区三区吞精| 蜜臀91精品一区二区三区| 一区二区三区四区日本视频| 日本欧美大码aⅴ在线播放| 一区在线视频观看| 中国字幕a在线看韩国电影| 91亚洲无吗| 亚洲精品少妇| 亚洲欧美日韩在线观看a三区| 在线观看精品| 手机在线电影一区| 久久中文欧美| 国产精品2区| 国产精品毛片视频| 日韩精品欧美成人高清一区二区| 亚洲欧美日韩综合国产aⅴ| 影视先锋久久| 日本午夜大片a在线观看| 精品日韩一区| 精品中文在线| 麻豆国产精品| 国产精品久久久久久久久久妞妞| 日欧美一区二区| 中文字幕一区二区三区日韩精品 | 久久久久九九精品影院| 奇米777国产一区国产二区| 亚洲精品福利| 亚洲天堂免费| 在线精品亚洲| 亚洲精品自拍| 日韩区一区二| 日韩激情综合| 日韩免费精品| 日本综合视频| 日本欧美一区二区| 日本欧美韩国一区三区| 欧美日韩亚洲一区二区三区在线| 日韩欧美另类中文字幕| 日韩国产精品久久久| 亚洲色图国产| 日韩精品免费一区二区夜夜嗨 | 三级在线观看一区二区| 久久亚洲国产精品一区二区| 国产亚洲一级| 天使萌一区二区三区免费观看| 亚洲综合不卡| 亚洲欧洲日韩| 91九色综合| 老司机精品视频在线播放| 久久精品国产久精国产| 成人亚洲一区| 999久久久国产精品| 好看的亚洲午夜视频在线| 欧美日韩国产探花| 亚洲色图网站| 97成人超碰| 精品三级av在线导航| 亚洲欧洲高清| 在线观看免费一区二区| 亚洲视频国产| 国产极品一区| 日本美女一区| 亚洲一区成人| 日本a级不卡| 成人台湾亚洲精品一区二区| 色婷婷狠狠五月综合天色拍| 欧美va天堂在线| 中文字幕免费精品| 欧美日本三区| а√天堂8资源在线| 欧美成人日韩| 日韩av中文字幕一区二区| 狂野欧美性猛交xxxx| 日韩一区自拍| 亚洲精选成人| 免费看一区二区三区| 91精品韩国| 先锋亚洲精品| 久久精品xxxxx| 播放一区二区| 亚洲三级在线| 国产精品99一区二区三| 99国产精品久久久久久久| 日日摸夜夜添夜夜添国产精品| 麻豆国产欧美日韩综合精品二区| 五月激情久久| 亚洲人妖在线| 精品三级国产| 国产麻豆综合| 美女尤物国产一区| 影音国产精品| 牛牛精品成人免费视频| 国产91精品对白在线播放| 日本不卡一区二区| 裤袜国产欧美精品一区| 亚洲免费毛片| 日韩久久视频| 日本成人精品| 亚洲伦乱视频| 欧美三区不卡| 欧美午夜不卡| 丰满少妇一区| 涩涩涩久久久成人精品| 色综合www| 欧美一级久久| 99久久夜色精品国产亚洲1000部| 日韩中文一区二区| 91精品国产成人观看| 欧美日韩一区二区三区四区在线观看| 高清av一区二区三区| 国产精品高清一区二区| 亚洲一区日本| 激情国产在线| 日韩精品亚洲专区在线观看| 亚洲手机视频|