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

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

當(dāng)前位置:首頁(yè)  >  IT問(wèn)答庫(kù)  >  Java基礎(chǔ)知識(shí)

Java集合的兩種排序方法

發(fā)布:java基礎(chǔ)教程 2022-02-28 17:05

Java集合的兩種排序方法

推薦答案

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

1.Collections.sort(List list)

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

  diyi種稱(chēng)為自然排序,參與排序的對(duì)象需實(shí)現(xiàn)comparable接口,重寫(xiě)其compareTo()方法,方法體中實(shí)現(xiàn)對(duì)象的比較大小規(guī)則,示例如下:

IT技術(shù)

 

  實(shí)體類(lèi):(基本屬性,getter/setter方法,有參無(wú)參構(gòu)造方法,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("不能轉(zhuǎn)換為Emp類(lèi)型的對(duì)象...");

 

    }

 

}

 

  第二種叫定制排序,或自定義排序,需編寫(xiě)匿名內(nèi)部類(lèi),new一個(gè)Comparator接口的比較器對(duì)象c,同時(shí)實(shí)現(xiàn)compare()其方法;

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

  說(shuō)明:diyi種方法不夠靈活,實(shí)體類(lèi)實(shí)現(xiàn)了comparable接口后,會(huì)增加耦合,如果在項(xiàng)目中不同的位置需要根據(jù)不同的屬性調(diào)用排序方法時(shí),需要反復(fù)修改比較規(guī)則(name還是按age),二者只能選擇其一,會(huì)起沖突.第二種就很好地解決了這個(gè)問(wèn)題.在需要的地方,創(chuàng)建個(gè)內(nèi)部類(lèi)的實(shí)例,重寫(xiě)其比較方法即可.

 

jUnit4單元測(cè)試類(lèi)代碼如下:

 

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注解標(biāo)注的方法會(huì)在其它測(cè)試方法執(zhí)行之前先執(zhí)行,

 

    //且只執(zhí)行一次.@Before注解標(biāo)注的方法會(huì)在每個(gè)測(cè)試方法之前執(zhí)行;

 

    //此處初始化集合只需要一次,因此使用@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("不能轉(zhuǎn)換為Emp類(lèi)型");

 

            }

 

        });

 

        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("不能轉(zhuǎn)換為Emp類(lèi)型");

 

            }

 

        });

 

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

 

        for(Object o : list){

 

            System.out.println(o);

 

        }

 

    }

 

}

 

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

 

運(yùn)行結(jié)果如下:

 

排序前:

 

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培訓(xùn)班分享:Java集合的兩種排序方法"的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€(xiàn)咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為您服務(wù)。

最新問(wèn)答資訊

01 unity用什么編程語(yǔ)言?unity學(xué)習(xí)難度大嗎

學(xué)習(xí) unity 語(yǔ)言
6020 人關(guān)注

02 python容易學(xué)嗎?學(xué)好python有什么好處?

學(xué)習(xí) python 工作 培訓(xùn)
5389 人關(guān)注

03 html是什么語(yǔ)言?html學(xué)習(xí)難嗎?

學(xué)習(xí) html 語(yǔ)言 可以
5062 人關(guān)注

04 c語(yǔ)言難學(xué)嗎?c語(yǔ)言學(xué)好要多久?

語(yǔ)言 技術(shù) 學(xué)習(xí)
4733 人關(guān)注

06 學(xué)好平面設(shè)計(jì)要多久?報(bào)速成班靠譜嗎?

平面 設(shè)計(jì) 學(xué)習(xí) 時(shí)間
4238 人關(guān)注

相關(guān)問(wèn)題

Java培訓(xùn)班的課程一般都學(xué)習(xí)什么內(nèi)容

首先是Java技術(shù)的核心和基礎(chǔ)JavaSE,這一階段會(huì)接觸到Java基礎(chǔ)語(yǔ)...

學(xué)習(xí)Java有哪些技巧嗎

java作為最經(jīng)典的編程語(yǔ)言之一受到大家的喜愛(ài),不止你我,很多人...

java程序員常用到的技術(shù)有哪些

操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)這些基礎(chǔ)知識(shí),工作之后基本都忘的差不多了...

int和integer有哪些區(qū)別?

JVM模型的介紹二

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

JVM模型的介紹一

Java培訓(xùn)班教程系列分享JVM模型的介紹一,Java內(nèi)存分配:JVM定義...

測(cè)一測(cè)
你知道多少I(mǎi)T梗

男生把自己的手放到女生的QQ里| 亚洲 成人 无码 在线观看| 国产网红无码精品视频| 天堂8中文在线最新版在线| 男男GV在线观看| 久久精品人人做人人爽电影| 国产日产欧产精品精品| 丰满年经的继拇6| JAGNEXSMAX在日本| 中文字幕高清免费日韩视频在线| 亚洲欧美一区二区成人片婷婷| 无码加勒比一区二区三区四区| 日本老熟妇ⅩXX| 欧美XXXX做受性欧美88| 乱人伦中文视频在线观看| 黑人顶到深处高潮颤抖| 国产成人一区二区三区视频免费 | 公天天吃我奶躁我的在线观看| 啊哈~给我~啊(H)| 777精品久无码人妻蜜桃| 曰韩无码A级成人毛片| 一区二区三区在线 | 日| 野花影视大全在线观看免费| 亚洲熟女乱综合一区二区| 亚洲AV永久无码精品一区二区| 无码AV动漫精品专区| 天天槽夜夜槽槽不停| 少妇午夜AV一区| 人与各种动ZZZ0O0OXXX| 人妻无码熟妇乱又视频| 人妻少妇性色精品专区av| 欧洲美女粗暴牲交免费观看| 趴下老子要从后面CAO你| 挽起裙子跨开双腿坐下去| 亚洲一区二区三区在线观看网站| 亚洲伊人久久大香线蕉AV| 野花高清在线观看免费官网| 又粗又大又黄又爽的免费视频 | 年轻漂亮岳每4乱理2| 天天爱天天做天天添天天欢| 野花影视大全在线观看免费高清| 不收费半夜年轻人看B站软件| 啊灬啊灬啊灬快灬高潮了| 国产特级毛片AAAAAAA高清| 免费A级毛片无码韩国| 欧美三级不卡在线观看| 欧州一级 片内射AV| 人妻AV资源先锋影音AV资源 | CSGO高清大片视频| 成人奭片免费观看| 国产成人AV无码专区亚洲AV| 国产美女高潮视频| 精品国产不卡一区二区三区| 久久久无码人妻精品无码| 娜娜的YIN荡生涯H全文阅读| 无码加勒比一区二区三区四区| 真实的国产乱ⅩXXX66小说| 7777成年免费视频| 国产日韩精品中文字无码| 欧美老肥妇多毛XXXXX| 日产精品卡2卡三卡四卡公司| 偷拍东北熟女BBWW| 亚洲国产精品无码7777一线| 一本大道香蕉大L在线吗视频| 东京热无码人妻精品一区二区三区| 国产精品无码午夜福利| 亚洲欧美日韩国产手机在线 | 人妻 中文 无码 JAVHD| 久久伊人少妇熟女大香线蕉| 少妇亚洲XXXX| 日本十八禁视频无遮挡| 日韩av在线一区二区| 亚洲午夜性猛春交XXXX| 亚洲精品无码久久久久| 成人精品一区二区三区电影| 久久婷婷五月综合色99啪| 草莓视频APP下载| 一本一道AV无码中文字幕麻豆| 44分钟欧美人与禽交片MP4| 亚洲乱妇老熟女爽到高潮的片| 北方有佳人电视剧全集免费观看| 做AJ的视频大全电视剧| 岳妇伦丰满69ⅩⅩ| 亚洲欧美在线综合色影视| 成年女人免费碰碰视频| 免费观看的AV毛片的网站| 亚洲AV日韩AV无码污污网站| 跪下吃他胯下的体育生H| 男孩子都会夹住女孩子头发| 亚洲日韩电影久久| 亚洲国产AV一区二区三区丶| 催眠~凌~辱~学园 在线观看| 草木影视在线视频免费观看| 久久久久成人精品无码| 久久久久影院美女国产主播| 丝袜人妻无码中文字幕综合网| 少妇人妻偷人精品视频| 欧美性色欧美A在线播放| 日日摸夜夜添夜夜添亚洲女人| 欧美人与人动人物2020| 免费女人18毛片A毛片视频| 亚洲AV永久无码精品三区在线4| FREE MOVIES 日本护| 久久精品99国产精品日本| 三级国产三级在线| 在公车上拨开内裤进入毛片| 国产精品亚洲精品日韩动图| 办公室双腿打开揉弄高潮淑芬| 精品久久久久久综合日本| 久久精品99久久香蕉国产色戒| 我的妈妈和黑人群交小说| 中文字幕精品无码| 国产精品自在线拍国产手青青机版 | 成人精品老熟妇一区二区| 含着她的花蒂啃咬高潮| BGMBGM浓毛老太太| 国精产品一区一区三区有限在线| 天天爽夜夜爽人人爽| 国产在线一区二区三区AV| 久久久久久A亚洲欧洲AV| 91蜜桃传媒精品久久久一区二区| 天天在线看无码AV片| 九九真实偷窥短视频| 成在线人AV免费无码高潮喷水| 免费中国最大但人文艺术| 午夜精品无人区乱码1区2区| 365天天色综合网| 亚洲AV无码成人精品区一本二本| 三上悠亚SSNI452内衣模特| 国产AV无码专区亚洲AV人妖| 影音先锋成人无码影院| 五月天天爽天天狠久久久综合| 久久国产精品99精品国产987| 忍着娇喘在公面前被夜袭| 国产高颜值大学生情侣酒店| 亚洲AV无码乱码忘忧草亚洲人| 女儿男朋友是妈妈的爱豆的电视剧 | 亚洲狠狠婷婷综合久久蜜芽| 99热都是精品久久久久久| 日产精品卡2卡三卡乱码网址 | 麻豆精品一卡2卡三卡4卡免费观 | 国产成人欧美精品视频APP| 亚洲精品1卡2卡三卡23卡| 欧美VA亚洲VA在线观看| 精品无码国产自产拍在线观看蜜| 国产精品久久久久精品香蕉| 西西大胆无码视频免费| 四虎永久在线精品免费无码| ZZIIZZII亚洲日本少妇| 亚洲精品一品区二品区三品区| 免费AV片在线观看无需播放器| 亚洲AV高清在线一区二区三区| 男女一起差差差差差| MM1313亚洲国产精品无码试| 亚洲AV永久爆乳无码5区| 欧美日产欧美日产国产精品| 精品人妻伦一二三区久久| 国产精品无码MV在线观看| 性少妇JEAⅠOUSVU片| 久久久精品人妻一区二区三区蜜桃 | 粗壮挺进邻居人妻无码| 中文字幕AV一区| 精品无码黑人又粗又大又长| 国产成人一区二区三区影院| 99精品国产一区二区三区| 欧美制服丝袜人妻另类| 国产综合18久久久久久| 国产AV一区二区二三区妇| 91人人澡人人爽内射电影院| AV人摸人人人澡人人超碰下载| 成人区人妻精品一区二| 国产精华液和欧美的精华液的区别 | 亚洲一区强奸视频| 西西人体44RT NET毛最多| 精品国产_亚洲人成在线| 宝贝儿感受到它对你的爱了吗小说| 呦系列视频一区二区三区| 洗澡被公强奷30分钟视频| 亚洲 成人 无码 在线观看| 久久香港三级台湾三级播放| GAY引诱服务生COM2O22| 天天躁日日躁狠狠躁2018| 免费无码鲁丝片一区二区| 女人呻吟声大了男人越有劲吗| 美女GIF趴跪式抽搐动态图| 亚洲AV无码国产一区二区三区四 | 精品国产一区AV天美传媒| 国产无遮挡又爽又黄大胸免费| 国产SUV精二区九色| 国产精品久久一国产精品胖虎| 黑人狂虐中国人妻陈艳| 青青草无码伊人久久| 无码男男作爱G片在线观看| 永久免费看啪啪网址入口| 绯色AV一区二区三区蜜臀| 国产美女裸体无遮挡免费视频| 激情综合激情五月俺也去| 精品久久久久久天美传媒| 麻豆国产原创视频在线播放| 精品久久久99大香线蕉|