国产91精品露脸国语对白-国产91精品系列在线观看-国产91精品一区-国产91精品一区二区-精品视频免费看-精品视频免费观看

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

當前位置:首頁  >  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 人關注

相關問題

計算機前端和后端區別,到底該學哪一個?

互聯網行業的發展速度很快,有關市場上對于it行業的人才需求量越...

java和php的區別是什么?哪一個更難一些?

有很多零基礎的小白想要去學習編程技術,那么可以考慮一下java和...

java與java script的區別有哪些?

相信大多數同學對java、java script都不會陌生,二者都是編程語...

java中什么是繼承?

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

java byte取值范圍是什么?

同學您好,java byte取值范圍是什么?針對這個問題可以看看下面的...

javascript和java有什么區別

1)基于對象和面向對象:Java是一種真正的面向對象的語言,即使是...

測一測
你知道多少IT梗

用各种刑具调教吹潮的视频| 吃瓜黑料视频永久地址| 精品人妻一区二区三区视频| 亚洲AV韩Av无码色老头| 国产精品无码素人福利| 天堂无码人妻精品一区二区三区| 夫妇交换聚会群4P疯狂大战| 新妺妺窝人体色7777太粗| 毛片无码免费无码播放| 艳妇乳肉豪妇荡乳ⅩXXOO| 亚洲综合色在线观看一区二区| 国内精品自国内精品自线| 亚洲AV成人综合网| 狠狠躁天天躁无码中文字幕图| 亚洲国产成人无码精品| 精品亚洲国产AⅤ在线| 亚洲人成色7777在线观看不卡| 精品无码久久久久国产APP| 亚洲色偷无码一区二区蜜桃AV| 久久精品熟女亚州AV麻豆| 野花免费观看日本电视剧| 久久亚洲中文字幕伊人久久大| 永久免费AⅤ无码网站国产| 满熟妇XXXX性久久9久久| 最新国产免费AV片在线观看| 欧美老妇交乱视频在线观看| 菠萝蜜视频APP在线观看| 色狠狠熟女AV一区二区三区| 国产激情久久久久影院蜜桃AV| 西西大胆无码视频免费| 极品粉嫩小泬白浆20P| 亚洲中文无码AV永久不收费| 免费播放片高清在线视频| AV未满十八禁免费网站| 日本工口里番全彩色| 灌醉国产猛男GAY1069| 无码中文人妻在线一区二区三区| 国产亚洲精品第一综合另类灬| 亚洲丰满熟妇XXXX在线观看| 久久精品亚洲中文无东京热| 中文字幕一区二区人妻| 欧洲做爰XXXⅩ富婆视频| 丁香五月天天综合亚洲| 西方38大但人文艺术| 精品人妻视频一区二区三区| 在线观看AV无需播放器| 强行挺进美艳老师的后臀| 国产VIDEOSSEX精品| 亚洲AV无码男人的天堂| 久久久久影院美女国产主播| 3D动漫精品啪啪一区二区免费| 日本丰满熟妇55乱偷| 国产精品久久久久9999| 亚洲裸男GAY自慰网站| 免费高清播放A级毛片完整版| 把腿张开让老子臊烂你的动漫视频| 水蜜桃成视频人在线看| 黑人处破女免费播放| 一级特黄无码毛片av一区二区 | 亚洲欧美成人中文日韩电影网站| 麻豆乱码1区2区新区| 成人国产亚洲精品A区| 五月丁香六月午夜成人影院| 久久久国产99久久国产久 | 乱人伦中文字幕在线视频| Z0ZOZ0另类Z0ZO| 无码人妻精品一区二区三区蜜桃91 | 久久精品香蕉绿巨人登场| 99成人国产综合久久精品| 少妇高清精品毛片在线视频| 极品人妻系列少妇系列| 2021久久天天躁狠狠躁夜夜| 少妇激情一区二区三区视频| 黄网站色视频免费观看| 18未满禁止免费69影院| 少妇人妻无码专区视频| 精品久久久无码中文字幕| ASS中国人体欣赏PICS| 我和岳交换夫妇爽| 久久天天躁狠狠躁夜夜2020| 成人AV无码一区二区三区| 亚洲AV无码乱码精品国产按摩 | 爆乳护士HD完整版在线播放| 性妇WBBBB搡BBBB嗓1| 毛茸茸的撤尿正面BBW| 丁香婷婷激情俺也去俺来也| 亚洲女人被黑人巨大进入| 人畜禽CORPORATION| 国产性色强伦免费视频| 2023国产精品一卡2卡三卡| 天天想你在线视频免费观看高清版| 久久99久久99精品免视看动漫| VIDEOSSEX变态狂另类| 小SAO货边洗澡边CAO你| 妺妺窝人体色聚窝窝www毛片| 国产韩国精品一区二区三区| 玉蒲团2之玉女心经| 丝袜足控一区二区三区| 久久综合久久鬼色| 国产成人精品午夜福利| 在线 | 麻豆国产传媒| 手机在线永久免费观看AV片 | 我和几个亲戚都做了爱| 看全色黄大色大片免费久久| 丰满少妇被猛烈进入| 野花香在线视频免费观看第一集 | 久久精品国产69国产精品亚洲| 波多野结衣AV黑人在线播放| 亚洲精品成人AV在线| 日韩精品无码一区二区三区免费| 精品人妻少妇一区二区三区| 超碰97久久国产精品牛牛| 亚洲欧美成人A∨在线观看| 日产乱码一二三区别免费一 | 办公丝袜AV一区二区三区| 亚洲国产成人五月综合网 | 波多野结衣在线播放| 亚洲精品蜜桃久久久久久| 日本丰满人妻XXXXXHD| 久久久久精品国产三级| 国产白丝护士AV在线网站| 中文字幕人妻无码系列第三区 | 国产精品美女久久久免费| 337P粉嫩日本欧洲亚洲大胆艺| 小雪被老汉玩遍各种方式电影| 欧美高清FREEXXXX性| 极品丰满熟妇人妻无码| 成人免费区一区二区三区| 野花高清免费观看完整视频中文版| 色又黄又爽18禁免费网站现观看| 狼友AV永久网站在线观看| 国产女人被躁到高潮的AV| YSL千人千色T9T9T9T9| 亚洲日韩乱码中文无码蜜桃| 丝袜美腿一区二区三区| 欧美高清VIVO最新| 精品亚洲国产成人AV制服| 国产成人精品视频网站| 99精品国产一区二区三区不卡| 亚洲精品美女久久久久99| 特级精品毛片免费观看| 欧美成人伊人久久综合网| 精品粉嫩BBWBBZBBW| 国产AⅤ精品一区三区| 99V久久综合狠狠综合久久| 亚洲乱码卡1卡2新区3| 玩两个丰满老熟女| 欧美在线一区二区三区| 久久久久亚洲AV成人网电影| 国产裸拍裸体女网站链接在线观看| 把腿张开老子cao烂你在线视频| 又嫩又紧欧美12P| 亚洲顶级裸体AV片| 无码内射中文字幕岛国片| 琪琪午夜成人理论福利片美容院| 久久久精品人妻一区亚美研究所 | 久久精品国产亚洲不AV麻豆| 国产精品色吧国产精品| 超碰97人人模人人爽人人喊| 中文字幕在线亚洲日韩6页| 亚洲国产精品一区二区第四页 | 免费A级毛片无码樱桃视频| 精品BBBBB性ⅩXXXX少妇| 国产成人无码精品一区不卡| NARUTOMANGA全彩纲手| 欲求不満な人妻は毎晩隣人に| 亚洲第一天堂无码专区| 无码免费伦费影视在线观看| 日本熟妇人妻中出| 欧美V亚洲V综合Ⅴ国产V| 久久久一本精品99久久精品66| 国模少妇一区二区三区咪咕| 国产AV无码一区二区二三区J| Z〇Z〇ZO女人另类Z〇Z○| 13277大但人文艺术日本活动| 亚洲日韩AV无码一区二区三区人| 香港A级毛片经典免费观看| 色情ⅩXXX欧美色妇HD| 欧美综合自拍亚洲综合图| 蜜桃av噜噜噜一区二区三区| 久久99精品久久久久久蜜芽| 国产真人无码作爱免费视频APP | 亚洲成A人一区二区三区| 无码人妻精品一区二区三区久久 | 久久夜色精品国产噜噜噜亚洲AV| 黑人又粗又大又 ╳乂| 国产精品免费一区二区三区四区| 成人作爱Av一级无码| JAVASCRIPTJAVA成熟亲子| 中文字幕无码一区二区免费| 亚洲图片小说激情综合| 亚洲精品AⅤ在线观看| 性欧美ⅩXX1819内谢| 无码H黄肉3D动漫在线观看| 色在线 | 国产| 日韩欧美亚洲每日更新在线| 人妻少妇无码精品专区| 欧美熟老妇人多毛OOXⅩ| 波多野结衣一区二区三区高清 | 亚洲色18成人网站WWW|