欧美经典日韩精品_日韩高清亚洲日韩精品一区_日韩精品无码综合视频网_国产v亚洲v天堂?无码久久_中文字幕免费无码专区

千鋒教育-做有情懷、有良心、有品質的職業教育機構

當前位置:首頁  >  IT問答庫  >  Java基礎知識

Java集合的兩種排序方法

發布:java基礎教程 2022-02-28 17:05

Java集合的兩種排序方法

推薦答案

  Java集合的兩種排序方法,Java集合的工具類Collections中提供了兩種排序的方法,分別是:

1.Collections.sort(List list)

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

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

IT技術

 

  實體類:(基本屬性,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集合的兩種排序方法"的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為您服務。

最新問答資訊

01 unity用什么編程語言?unity學習難度大嗎

學習 unity 語言
6020 人關注

02 python容易學嗎?學好python有什么好處?

學習 python 工作 培訓
5389 人關注

03 html是什么語言?html學習難嗎?

學習 html 語言 可以
5062 人關注

04 c語言難學嗎?c語言學好要多久?

語言 技術 學習
4733 人關注

06 學好平面設計要多久?報速成班靠譜嗎?

平面 設計 學習 時間
4238 人關注

相關問題

Java培訓班的課程一般都學習什么內容

首先是Java技術的核心和基礎JavaSE,這一階段會接觸到Java基礎語...

學習Java有哪些技巧嗎

java作為最經典的編程語言之一受到大家的喜愛,不止你我,很多人...

java程序員常用到的技術有哪些

操作系統、計算機網絡這些基礎知識,工作之后基本都忘的差不多了...

int和integer有哪些區別?

int 和 Integer 的基本區別有如下?點: int 是基本數據類型,...

JVM模型的介紹二

JVM模型的介紹二,接著上一篇我們繼續來分享,棧之本地方法棧。 ...

JVM模型的介紹一

Java培訓班教程系列分享JVM模型的介紹一,Java內存分配:JVM定義...

測一測
你知道多少IT梗

免费A级毛片无码A∨蜜芽| 人妻出轨无码AV| 国产偷V国产偷V亚洲高清| 亚洲精品色午夜无码专区日韩| 欧产日产国产精品精品| 国产精品久久无码不卡| 中国OLDWOMAN老熟妇| 无码A级毛片免费视频内谢5J| 国产成人午夜福利院| 野花韩国视频观看免费高清的| 日韩精品无码一区二区三区AV| 精品无码三级在线观看视频| 从你的全世界路过| 影音先锋新男人AV资源站| 天天摸天天做天天爽天天弄| 妺妺晚上扒我内裤玩我J| 国产三级多多影院| 阿公抱着我边摸边吃奶视频 | 女人扒开腿让男人狂桶30分钟| 国产在线精品无码AV不卡顿| 成人AV天堂一二三在线观看| 一本加勒比HEZYO无码资源网| 无码久久精品国产亚洲AV影片| 欧洲RAPPER潮水太多| 久久久久亚洲AV成人无码网站| 国产免费AV片在线观看麻豆| 边做饭边被躁BD小说| 在线观看特色大片免费视频| 亚洲の无码国产の无码影院 | 女人裸体张开腿无遮挡| 精品无人乱码一区二区三区| 国产激情无码一区二区APP| XXXXFREE少妇过瘾| 在床上拔萝卜又疼又叫什么症状| 亚洲AV无码专区国产乱码不卡| 色老太BBWBBWBBW高潮| 女人18毛片A级女人18水真多| 久久成人麻豆午夜电影| 国产伦理一区二区| 福建妹妹幼儿十岁左右| 啊宝宝的扇贝真会夹C视频| 中文字幕丰满乱孑伦无码专区| 亚洲精品无码不卡| 亚洲 另类 日韩 制服 无码| 色欲AV浪潮AV蜜臀AⅤ| 欧美颜射内射中出口爆在线| 免费真人视频网站直播下载| 久久久久久精品成人免费| 含羞草四叶草三叶草| 国产精品久久久久精品综合紧| 成人欧美日韩一区二区三区| Chinese老熟女老女人HD| 2023年最新绝伦推理片推荐| 再灬再灬再灬深一点舒服| 亚洲午夜国产成人AV电影| 亚洲AV永久无码精品水牛影视| 婷婷97狠狠色综合| 色视频综合无码一区二区三区| 人禽杂交18禁网站免费| 啪啪无码人妻丰满熟妇| 欧美金妇欧美乱妇XXXX| 欧美成妇人吹潮在线播放| 男女啪啪进出阳道猛进| 男人放进女人里面叫什么| 麻麻让我挺进她的黑森林| 兰州熟妇高潮露脸| 乱人伦人妻中文字幕在线入口| 久久久久久久久久久精品| 久久久精品国产SM调教网站| 精品人妻一区二区三区Av| 国色天香网WWW在线观看| 国产一区二区三区无码免费| 国产无套乱子伦精彩是白视频| 国产偷国产偷亚洲高清日韩| 国产在线精品二区| 韩国三级中文字幕HD| 精品久久一卡2卡三卡4卡分区| 久久99九九精品久久久久蜜桃| 久久久久国产精品嫩草影院 | 久久精品国产亚洲AV嫖农村妇女| 精品久久久久久无码中文字幕一区| 激情综合色综合啪啪五月丁香搜索 | 韩国无码无遮挡在线观看 | 成人亚洲AV日韩AV欧v| 超碰CAOPROM 永久地址发| 粗大的内捧猛烈进出小视频| 高潮VIDEOSSEX潮喷另类| 国产AV高清无亚洲| 国产裸体XXXX视频在线播放 | 狠狠色丁香久久婷婷综合蜜芽五月 | 欧美亚洲另类 丝袜综合网| 欧美性婬爽www视频播放| 人禽杂交18禁网站| 色ww1区2区在线观看| 天天躁日日躁狠狠躁性色AVQ| 午夜不卡AV免费| 亚洲成人片在线观看| 亚洲色偷偷综合亚洲av伊人| 一本久久综合亚洲鲁鲁五月天| 中文字幕亚洲欧美专区| JAPONENSISFES中国| 丰满饱满极品熟妇XXXX| 国产精品一区二区高清在线| 国模小黎大尺度精品(02)[| 精品无码中文视频在线观看| 免费无码久久成人网站| 人妻丝袜另类欧美偷拍视频| 私人影院播放器大全| 亚洲AV无码成人精品区在线h| 亚洲人成精品久久久久| 中文字幕无码久久一区| www.av在线.com| 国产成人无码AⅤ| 狠狠色噜噜狠狠狠狠97| 老汉粗大不带套怀孕| 欧美性白人极品1819HD| 深灬深灬深灬深灬一点| 亚洲AV无码乱码在线观看富二代| 一本色道久久88综合日韩精品| CHINA浴室洗澡VOYEUR| 国产AV毛片1区2区3区| 极品呦女JAPANESE| 免费无人区一码二码乱码| 日本熟妇色XXXXX日本妇奷| 午夜麻豆国产精品无码| 亚洲一区二区三区无码国产| AV无码AV高潮AV喷吹免费| 床震吃胸膜奶免费视频| 果冻传媒蜜桃传媒精东豆| 两个黑人大战嫩白金发美女| 日本另类ΑV欧美另类AⅤ| 香蕉久久AV一区二区三区APP | 亚洲AV成人片在线观看18| 一本大道东京热无码AV| 巴西女人与禽2O2O性论交| 国产毛片精选好视频| 狂野欧美激情性XXXX在线观看| 日本强好片久久久久久AAA| 亚洲 欧美 中文 日韩AⅤ手机| 在线播放无码后入内射少妇| 抽搐一进一出再深一点| 娇小萝被两个黑人用半米长| 欧美群交XXXCOM| 亚洲AV成人无码网站不卡| 777成了乱人视频| 国产精品亚洲АV无码播放| 乱肉怀孕又粗又大| 四虎成人WWW成人影院| 亚洲中文字幕AⅤ无码天堂| 成人A片产无码免费视频在线观看 成人A毛片免费全部播放 | 国产高清自产拍AV在线| 兰姨不敢发出一点声音怕吵醒风| 少妇人妻无码专区视频免费| 亚洲熟妇无码乱子AV电影| 部长来家里喝酒日剧叫什么| 精品国产一区二区AV片| 日本XX爽21护士| 亚洲日韩中文字幕一区| 大肉大捧一进一出好爽视频MBA| 精品无码国产自产拍在线观看蜜| 日产乱码一二三区别免费必看| 亚洲精品自产拍在线观看| 草莓丝瓜榴莲绿巨人WWW| 精品无码乱码AV| 少妇被粗大的猛烈进出视频| 与亲女洗澡时伦了毛片| 国产精品久久久久9999无码 | 久久A级毛片免费观看| 色婷婷综合久久久中文字幕| 一二三四在线视频社区8| 国产精品麻豆成人AV电影| 女人自慰喷水全过程免费观看| 亚洲AV午夜成人片忘忧草在线| CHINESE国产AVVIDEOXXXX实拍| 极品粉嫩小泬无遮挡20P| 日韩精品成人无码专区免费| 亚洲在AV极品无码高清| 国产成人综合久久亚洲精品| 女性自慰网站免费观看W| 亚洲精品成人网线在线播放VA| 丰满少妇被猛烈进AV毛片| 免费人成年激情视频在线观看| 亚洲AV无码一区二区三区大黄瓜 | 东北往事之黑道风云20年第二部| 久久久久亚洲AV成人网| 无码人妻一区二区三区一| らだ天堂√在线中文WWW| 老熟女@TUBEUMTV| 亚洲AV永久无码精品秋霞电影秋| 成人免费无码不卡毛片| 美女高潮20分钟视频在线观看| 亚洲va熟妇自拍无码区| 国产AV无码专区亚洲AV软件| 哪种女人弄进去最舒服| 亚洲人成无码网站18禁10| 国产美女高潮视频| 少妇人妻偷人精品无码视频| VIDEOS性饥渴| 女人夜夜春高潮爽A∨片 | 亚洲日韩乱码中文无码蜜桃臀网站 |