欧美经典日韩精品_日韩高清亚洲日韩精品一区_日韩精品无码综合视频网_国产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)诰€咨詢(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)題

計(jì)算機(jī)前端和后端區(qū)別,到底該學(xué)哪一個(gè)?

互聯(lián)網(wǎng)行業(yè)的發(fā)展速度很快,有關(guān)市場(chǎng)上對(duì)于it行業(yè)的人才需求量越...

java和php的區(qū)別是什么?哪一個(gè)更難一些?

有很多零基礎(chǔ)的小白想要去學(xué)習(xí)編程技術(shù),那么可以考慮一下java和...

java與java script的區(qū)別有哪些?

相信大多數(shù)同學(xué)對(duì)java、java script都不會(huì)陌生,二者都是編程語(yǔ)...

java中什么是繼承?

繼承的特點(diǎn):只需明確一點(diǎn),java只支持單繼承,不支持多繼承,但...

java byte取值范圍是什么?

同學(xué)您好,java byte取值范圍是什么?針對(duì)這個(gè)問(wèn)題可以看看下面的...

javascript和java有什么區(qū)別

1)基于對(duì)象和面向?qū)ο螅篔ava是一種真正的面向?qū)ο蟮恼Z(yǔ)言,即使是...

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

人人做人人爽国产视| 被夫上司强迫的女人在线中文 | 成人国产一区二区三区精品不卡 | 玩两个丰满老熟女久久网| 无码人妻巨屁股系列大又挺拔 | 97久久香蕉国产线看观看| VIDEOS日本多毛HD护士| 被俩个黑人前后破苞的女人| 公天天吃我奶躁我的在线观看| 国产精品免费高清在线观看| 国内精品自国内精品自线| 精品无码一区二区三区电影| 看黄A大片日本真人视频直播| 欧产日产国产精品精品| 人人模人人爽人人喊久久| 少妇无力反抗慢慢张开双腿| 无码一区二区三区在线| 亚洲国产AⅤ精品一区二区百度| 亚洲无线码高清在线观看| 中文字幕AV一区中文字幕天堂| AV日日碰狠狠躁久久躁| 粗大黑人巨精大战欧美成人| 国产精品成人VA在线观看| 黑人上司好猛我好爽中文字幕 | 韩国精品一区二区无码视频| 久久精品国产99国产精品导航| 免费能直接看黄的视频| 人妻少妇精品中文字幕av蜜桃| 熟妇人妻系列AV无码一区二区| 学生无码AV一区二区三区| 亚洲熟妇无码AV在线少妇| 18未满禁止免费69影院| 超碰97人人做人人爱少妇| 国产精品久久久久永久免费看| 激情男女高潮射精AV免费| 老师掀起裙子让我挺进| 欧美最爽的乱婬视频婬色视频| 少妇久久久久久被弄到高潮| 亚洲AV无码成人网站WWW| 一区二区乱子伦在线播放| FREE性满足HD| 给丰满少妇按摩到高潮| 哈昂~哈昂够了太多了老师| 久久天天躁狠狠躁夜夜96流白浆| 欧美日韩一区二区成人午夜电影 | 国产精品一国产AV麻豆| 精品亚洲国产成人蜜臀优播AV| 免费视频片多多视频免费高清| 日本无人区码一码二码三码四码 | 少妇高潮太爽了在线观看欧美| 亚洲av成人网站| 又粗又大又黄又爽的免费视频 | 韩国三级大全久久网站| 巨粗进入警花哭喊求饶| 人妻无码系列一区二区三区| 无码人妻精品一区二区三区蜜桃91| 亚洲人成人网站色WWW| 99久久人妻精品免费二区| 国产96色在线 | 国| 精产国品一二三产品在哪| 男人边吃奶边做好爽免费视频 | 人人妻人人澡人人爽精品欧美| 无码专区 丝袜美腿 制服师生| 亚洲午夜理论片在线观看| CHINA真实VIDEOS另类| 国产激情久久久久影院蜜桃AV| 精品一区二区三区国产在线观看| 浓毛BGMBGMBGM胖老太太| 水蜜桃AV无码一区二区| 亚洲国产欧美在线成人| 99国产欧美久久久精品蜜芽 | 精品国偷自产在线视频| 男朋友一晚弄了我5次正常吗| 日韩一区二区三区AV| 亚洲成人综合av| 2012手机免费观看版国语| 丰满少妇被猛烈进入无码| 娇小美女被黑壮汉C到喷水| 欧美顶级PPT免费模板网站| 婷婷四月开心色房播播| 亚洲一区二区三区中文字幕在线 | 搡老女人P老熟妇老熟女| 亚洲成A人片在线观看无码下载 | 国产精品JIZZ在线观看| 久久久久亚洲AV成人网人人网站 | 国产精品亚洲А∨无码播放不卡| 久久久亚洲欧洲日产国产成人无码| 人妻少妇中文字幕久久| 亚洲AⅤ中文无码字幕色| 中文字幕人妻丝袜乱一区三区| 成为人视频人的APP有哪些软件| 激情男女高潮射精AV免费| 欧美嫩交一区二区三区| 无码少妇一区二区| 在卫生间被教官做好爽| 丁香五月天天综合亚洲| 精品人妻少妇嫩草AV无码专区| 欧美日韩国产码高清综合人成| 午夜夫妻试看120国产| 中国人妻XXXXX免费看| 国产 亚洲 无码 激情| 久久97超碰色中文字幕总站| 欧美亚洲国产成人一区二区三区| 亚欧洲精品在线视频免费观看| 中文字幕日韩人妻| 国产二级一片内射视频插放 | 狠狠精品久久久无码中文字幕 | 美女GIF趴跪式抽搐动态图| 他的粗大把她捣出白沫| 夜夜高潮次次欢爽AV女视频| 成人无码免费一区二区三区| 精品国产成人国产在线观看| 秋霞鲁丝片成人无码| 性无码专区一色吊丝中文字幕| 50多岁岳不让我戴套| 国产精品人人妻人色五月| 蜜臀AV性久久久久蜜臀AⅤ| 婷婷97狠狠成人免费视频| 欲求不满邻居的爆乳在线播放| 丰满少妇被猛烈进入高清播放| 久久久久久AV无码免费网站 | 亚洲熟妇色ⅩXXXX日本| 成熟人妻AV无码专区| 久久精品国产久精国产果冻传媒| 日韩AV无码社区一区二区三区| 亚洲精品一线二线三线无人区 | 99无码熟妇丰满人妻啪啪| 国产午夜亚洲精品不卡| 欧美黑人又大又粗高潮喷水| 亚洲 国产 制服 丝袜 一区| 99国产欧美精品久久久蜜芽| 国产香蕉97碰碰视频VA碰碰看| 欧美激情000ⅩXX同性| 亚洲AV日韩AV高潮潮喷无码| BGMBGMBGM老妇视频| 好大的奶好爽浪蹄子| 全部免费毛片在线播放| 亚洲精品第一国产综合精品99| 超碰人人透人人爽人人看| 久久精品国产99久久久香蕉| 色婷婷亚洲一区二区三区| 亚洲中文字幕久久精品无码VA | 成人AV在线网站| 久久久精品人妻一区二区三区四| 少妇伦子伦情品无吗| 永久AV狼友网站在线观看| 国产精品高潮呻吟久久AV| 妺妺窝人体色WWW看美女图片| 性饥渴老头XXXXⅩHD| JΑPΑN丰满人妻HDXXXX| 精品国产免费第一区二区三区| 日本熟妇毛茸茸XXXX| 一本大道东京热无码| 国产大陆亚洲精品国产| 女女女女女裸体处开BBB| 亚洲AV成人午夜在线看见网站| エロドラえもんCOM中文在线| 精品无码久久久久国产APP| 少妇爆乳无码AV无码专区| 中国亚州女人69内射少妇| 国产一区二区三区小说| 日本XXXX18裸体XXXX| 亚洲中文字幕AV不卡无码| 国产精品久久久久久久久鸭无码 | 久久亚洲精品人成综合网| 无码人妻精品一区二区蜜桃网站| BT天堂资源种子在线| 精品久久久久久久久久中文字幕| 试看AAAA啪啪片120秒| 18禁爆乳无遮挡免费观看日本动| 国精产品一二伊田园9777| 日本三线和韩国三线的市场定位 | 国产AV天堂无码一区二区三区| 男人吃奶摸下挵进去好爽在线观看| 亚洲AV无码专区国产乱码京东传 | WWW夜片内射视频在观看视频| 久久精品国产99久久久香蕉| 无码精品国产VA在线观看| chi老女人老熟女HD| 久久精品第一国产久精国产宅男6 久久精品第九区免费观看 | 久久精品国产导航| 无码人妻精品一区二区蜜桃不卡 | AV中文无码乱人伦在线观看| 久久99国产精品99蜜桃| 玩弄秘书的奶又大又软| JAPANESE熟女熟妇| 久久久久久九九精品久| 小妖精抬起臀嗯啊H军人| 别揉我奶头~嗯~啊~视频在线观| 久久综合给合久久狠狠狠97色6| 性妇WBBBB搡BBBB嗓小说| 差差差很疼视频无掩丰富| 没带罩子被校霸C了一节课怎么办| 亚洲AV无码成H人动漫无遮挡| 大桥未久亚洲无AV码在线| 牧场ⅩXXXBBBB变态另类| 亚洲精品有码在线观看| 国产精品99久久免费| 人人妻人人爽人人澡人人| 中国另类丰满熟妇乱XXXXX|