中文在线免费看视频_国产成人精品亚洲日本在线观看_亚洲精品第一综合99久久_国产亚洲精品日韩综合网

當前位置: 首頁 / 技術干貨 / 正文
好程序員Java培訓分享Java集合的兩種排序方法

2020-10-09

Java培訓

  好程序員Java培訓分享Java集合的兩種排序方法,Java集合的工具類Collections中提供了兩種排序的方法,分別是:

好程序員

1.Collections.sort(List list)

2.Collections.sort(List list,Comparator c)

diyi種稱為自然排序,參與排序的對象需實現comparable接口,重寫其compareTo()方法,方法體中實現對象的比較大小規則,示例如下:

實體類:(基本屬性,getter/setter方法,有參無參構造方法,toString方法)

package test;

public class Emp implements Comparable {

    private String name;

    private int 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;

    }

    public Emp() {

        super();

    }

    public Emp(String name, int age) {

        super();

        this.name = name;

        this.age = age;

    }

    @Override

    public String toString() {

        return "Emp [name=" + name + ", age=" + age + "]";

    }

    @Override

    public int compareTo(Object o) {

        if(o instanceof Emp){

            Emp emp = (Emp) o;

//          return this.age-emp.getAge();//按照年齡升序排序

            return this.name.compareTo(emp.getName());//換姓名升序排序

        }

        throw new ClassCastException("不能轉換為Emp類型的對象...");

    }

}

第二種叫定制排序,或自定義排序,需編寫匿名內部類,new一個Comparator接口的比較器對象c,同時實現compare()其方法;

然后將比較器對象c傳給Collections.sort()方法的參數列表中,實現排序功能;

說明:diyi種方法不夠靈活,實體類實現了comparable接口后,會增加耦合,如果在項目中不同的位置需要根據不同的屬性調用排序方法時,需要反復修改比較規則(name還是按age),二者只能選擇其一,會起沖突.第二種就很好地解決了這個問題.在需要的地方,創建個內部類的實例,重寫其比較方法即可.

jUnit4單元測試類代碼如下:

package test;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

import org.junit.BeforeClass;

import org.junit.Test;

public class TestSort {

    static List list = new ArrayList();

    //@BeforeClass注解標注的方法會在其它測試方法執行之前先執行,

    //且只執行一次.@Before注解標注的方法會在每個測試方法之前執行;

    //此處初始化集合只需要一次,因此使用@BeforeClass.

    @BeforeClass

    public static void init(){

        list.add(new Emp("tom",18));

        list.add(new Emp("jack",20));

        list.add(new Emp("rose",15));

        list.add(new Emp("jerry",17));

        System.out.println("排序前:");

        for(Object o : list){

            System.out.println(o);

        }

    }

    /**age升序排序*/

//  @Test

//  public void testSortAge(){

//      Collections.sort(list);

//      System.out.println("自然排序按age排序后:");

//      for(Object o : list){

//          System.out.println(o);

//      }

//  }

//

    /**name升序排序*/

    @Test

    public void testSortName(){

        Collections.sort(list);

        System.out.println("自然排序按name升序排序后:");

        for(Object o : list){

            System.out.println(o);

        }

    }

    /**使用Comparator比較器按age升序排序*/

    @Test

    public void testComparatorSortAge(){

        Collections.sort(list,new Comparator () {

            @Override

            public int compare(Object o1, Object o2) {

                if(o1 instanceof Emp && o2 instanceof Emp){

                    Emp e1 = (Emp) o1;

                    Emp e2 = (Emp) o2;

                    return e1.getAge() - e2.getAge();

                }

                throw new ClassCastException("不能轉換為Emp類型");

            }

        });

        System.out.println("使用Comparator比較器按age升序排序后:");

        for(Object o : list){

            System.out.println(o);

        }

    }

    /**使用Comparator比較器按name升序排序*/

    @Test

    public void testComparatorSortName(){

        Collections.sort(list,new Comparator () {

            @Override

            public int compare(Object o1, Object o2) {

                if(o1 instanceof Emp && o2 instanceof Emp){

                    Emp e1 = (Emp) o1;

                    Emp e2 = (Emp) o2;

                    return e1.getName().compareTo(e2.getName());

                }

                throw new ClassCastException("不能轉換為Emp類型");

            }

        });

        System.out.println("使用Comparator比較器按name升序排序后:");

        for(Object o : list){

            System.out.println(o);

        }

    }

}

右鍵空白位置>Run As>JUnit Test>

運行結果如下:

排序前:

Emp [name=tom, age=18]

Emp [name=jack, age=20]

Emp [name=rose, age=15]

Emp [name=jerry, age=17]

自然排序按name升序排序后:

Emp [name=jack, age=20]

Emp [name=jerry, age=17]

Emp [name=rose, age=15]

Emp [name=tom, age=18]

使用Comparator比較器按age升序排序后:

Emp [name=rose, age=15]

Emp [name=jerry, age=17]

Emp [name=tom, age=18]

Emp [name=jack, age=20]

使用Comparator比較器按name升序排序后:

Emp [name=jack, age=20]

Emp [name=jerry, age=17]

Emp [name=rose, age=15]

Emp [name=tom, age=18]

以上就是關于好程序員Java培訓分享的Java集合的兩種排序方法,希望對大家有用。

好程序員公眾號

  • · 剖析行業發展趨勢
  • · 匯聚企業項目源碼

好程序員開班動態

More+
  • HTML5大前端 <高端班>

    開班時間:2021-04-12(深圳)

    開班盛況

    開班時間:2021-05-17(北京)

    開班盛況
  • 大數據+人工智能 <高端班>

    開班時間:2021-03-22(杭州)

    開班盛況

    開班時間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發 <高端班>

    開班時間:2021-05-10(北京)

    開班盛況

    開班時間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數據分析 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2020-09-21(上海)

    開班盛況
  • 云計算開發 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2019-07-22(北京)

    開班盛況
IT培訓IT培訓
在線咨詢
IT培訓IT培訓
試聽
IT培訓IT培訓
入學教程
IT培訓IT培訓
立即報名
IT培訓

Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號

中文在线免费看视频_国产成人精品亚洲日本在线观看_亚洲精品第一综合99久久_国产亚洲精品日韩综合网

            国产精品538一区二区在线| 国产精品第13页| 成人免费福利片| 亚洲一区二区不卡免费| 欧美成人精品高清在线播放| 成人午夜视频免费看| 亚洲1区2区3区视频| 2022国产精品视频| 91国偷自产一区二区开放时间 | 成人免费va视频| 亚洲123区在线观看| 久久视频一区二区| 欧美亚洲自拍偷拍| 国产成人免费视频一区| 午夜天堂影视香蕉久久| 国产精品三级视频| 日韩三级视频在线观看| 91蝌蚪国产九色| 国内精品自线一区二区三区视频| 亚洲蜜臀av乱码久久精品| 精品国产乱码久久久久久免费 | 久久久久久久av麻豆果冻| 一本一本大道香蕉久在线精品| 日本在线不卡一区| 中文字幕欧美激情一区| 日韩亚洲欧美中文三级| 在线精品视频免费观看| 国产99一区视频免费| 美日韩一区二区| 亚洲成人精品影院| 美国十次综合导航| 亚洲精品欧美激情| 欧美激情在线一区二区三区| 欧美一区二区三区在线视频| 欧美性大战久久久| 成人自拍视频在线| 国内精品久久久久影院一蜜桃| 日韩黄色一级片| 亚洲综合在线免费观看| 国产精品嫩草影院av蜜臀| 日韩欧美国产不卡| 这里只有精品视频在线观看| 欧美色手机在线观看| 色婷婷精品大视频在线蜜桃视频| 国产成人亚洲综合色影视| 精品亚洲porn| 久久精品久久久精品美女| 天堂蜜桃一区二区三区| 亚洲午夜久久久久久久久久久| 亚洲日本中文字幕区| 国产精品萝li| 亚洲欧洲一区二区三区| 中文字幕久久午夜不卡| 国产精品美女一区二区三区| 国产精品美女一区二区| 日韩美女视频一区二区 | 成人a区在线观看| 成人美女在线观看| 99精品国产热久久91蜜凸| aaa亚洲精品| 91国产精品成人| 欧美日韩中文一区| 884aa四虎影成人精品一区| 911精品产国品一二三产区| 91精品国产手机| 精品播放一区二区| 国产欧美日韩在线| 最新国产精品久久精品| 一区二区三区丝袜| 日韩中文字幕av电影| 久久99久久久欧美国产| 国产寡妇亲子伦一区二区| eeuss鲁片一区二区三区 | 欧美aaa在线| 久久精品免费看| 成人在线视频一区二区| 色久综合一二码| 欧美一区二区在线视频| 久久亚洲一区二区三区明星换脸| 国产精品妹子av| 亚洲午夜免费电影| 激情综合色丁香一区二区| 这里只有精品电影| 国产片一区二区三区| 亚洲欧美色图小说| 蜜臀av性久久久久蜜臀aⅴ四虎| 激情国产一区二区 | 99久久精品国产一区| 精品视频999| 久久综合九色综合97婷婷| 亚洲国产成人午夜在线一区| 亚洲国产日韩av| 国产成人午夜高潮毛片| 91高清在线观看| 欧美v日韩v国产v| 悠悠色在线精品| 久久国产尿小便嘘嘘尿| 91麻豆swag| 久久久国产一区二区三区四区小说 | 中文字幕av一区二区三区| 亚洲影院久久精品| 国产精品自产自拍| 欧美日韩一区二区三区四区 | 成人性生交大合| 欧美一区二区不卡视频| 亚洲欧洲制服丝袜| 国内外成人在线| 欧美另类高清zo欧美| 国产精品视频一区二区三区不卡| 人禽交欧美网站| 在线观看日韩一区| 国产精品久久久久久妇女6080| 久久精品国产亚洲aⅴ| 欧美专区亚洲专区| 中文字幕亚洲电影| 国产一区二区日韩精品| 欧美精品一级二级| 一区二区免费在线播放| 波多野结衣中文字幕一区| 26uuuu精品一区二区| 偷拍与自拍一区| 欧美视频一区在线| 亚洲精品成人a在线观看| 成人伦理片在线| 国产欧美日韩中文久久| 国产资源在线一区| 日韩美女视频在线| 日韩—二三区免费观看av| 在线视频一区二区免费| 亚洲私人影院在线观看| 国产 欧美在线| 国产日韩欧美不卡| 国产精品自拍网站| 国产日产精品1区| 国产传媒久久文化传媒| 久久亚洲私人国产精品va媚药| 蜜臀国产一区二区三区在线播放| 欧美区一区二区三区| 亚洲国产美国国产综合一区二区 | 日韩一区二区在线观看视频| 亚洲第一搞黄网站| 欧美亚洲禁片免费| 亚洲成人动漫av| 欧美日韩国产一级二级| 午夜国产不卡在线观看视频| 欧美日韩激情一区二区三区| 亚洲夂夂婷婷色拍ww47| 久久久午夜精品理论片中文字幕| 裸体一区二区三区| 日韩亚洲欧美中文三级| 精品一区二区免费看| 久久综合久久99| 成人永久aaa| 亚洲少妇最新在线视频| 91国偷自产一区二区三区观看| 亚洲综合激情小说| 9191精品国产综合久久久久久 | 蜜桃视频在线观看一区| 欧美成人aa大片| 国产精品亚洲第一区在线暖暖韩国 | 99精品偷自拍| 亚洲国产综合在线| 欧美一级黄色录像| 国产成人aaaa| 亚洲伦在线观看| 欧美精品乱人伦久久久久久| 美国欧美日韩国产在线播放| 久久这里只精品最新地址| 成人h版在线观看| 一区二区三区四区在线| 777xxx欧美| 国产91精品一区二区麻豆网站 | 成人综合婷婷国产精品久久蜜臀| 国产精品第13页| 在线成人高清不卡| 国产精品一区二区三区99| √…a在线天堂一区| 欧美日韩成人在线一区| 国产精品77777| 一区二区三区电影在线播| 日韩欧美久久久| 91免费观看视频| 久久精品久久久精品美女| 国产精品久久久一本精品| 欧美日韩精品系列| 风间由美一区二区三区在线观看| 一级特黄大欧美久久久| 精品国产一区二区在线观看| 99re这里只有精品视频首页| 日韩电影在线观看一区| 中文字幕在线观看一区| 91精品国产色综合久久ai换脸| 成人av网站在线观看| 日本视频一区二区| 亚洲伦理在线精品| 久久综合久久99| 欧美日韩在线播放三区| 懂色中文一区二区在线播放| 日韩av网站免费在线| 亚洲欧美日韩成人高清在线一区|