亚洲国产日韩成人综合天堂_一区二区三区视频网站_国内小视频在线看_国产精品热视频_国产丝袜自拍_国产视频久久久久_麻豆精品免费视频入口_久久综合国产精品

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

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

Java集合的兩種排序方法

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

Java集合的兩種排序方法

推薦答案

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

1.Collections.sort(List list)

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

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

IT技術(shù)

 

  實(shí)體類:(基本屬性,getter/setter方法,有參無參構(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類型的對(duì)象...");

 

    }

 

}

 

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

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

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

 

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

 

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類型");

 

            }

 

        });

 

        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類型");

 

            }

 

        });

 

        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ì)大家有幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為您服務(wù)。

最新問答資訊

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

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

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

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

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

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

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

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

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

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

相關(guān)問題

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

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

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

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

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

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

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

JVM模型的介紹二

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

JVM模型的介紹一

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

測(cè)一測(cè)
你知道多少IT梗

91九色视频蝌蚪| 久久99国产乱子伦精品免费| 国产人妖ts一区二区| 日日狠狠久久偷偷综合色| 欧美日韩爱爱| 午夜久久影院| 日韩精品久久久久久| 国产麻豆91精品| 99久久精品免费观看| 亚洲天堂免费看| 日韩欧美在线观看| 欧美不卡一区二区| 久久精品国产91精品亚洲| 日韩av电影在线免费播放| 99re视频在线| 亚洲综合欧美日韩| 日韩一级片播放| 免费看91视频| 欧美片一区二区| 国产精品热久久| 国产人成精品| 在线免费观看高清视频色| 怡红院红怡院欧美aⅴ怡春院| 深夜av在线| 国内精品麻豆美女在线播放视频| 亚洲最大av| 国产成人欧美日韩在线电影| 国产精品久久久久久久久免费相片 | 丝袜视频国产在线播放| 日本高清成人vr专区| 国产精品xnxxcom| 欧美激情aⅴ一区二区三区| 精品一区二区日韩| 亚洲日本在线天堂| 日韩欧美视频一区| 韩国精品美女www爽爽爽视频| 懂色中文一区二区三区在线视频| 免费在线黄网站| av网站免费在线播放| 最新中文字幕第一页| 在线伊人电影| 久久国产精品一区| 亚洲伊人春色| 国产一二三精品| 亚洲免费毛片网站| 亚洲欧美日韩直播| 97人人模人人爽人人喊38tv| 久久观看最新视频| 在线免费观看成年人视频| 亚洲高清视频免费观看| 在线看污网站| 日本孕妇大胆孕交无码| 国产探花一区二区| 不卡视频在线看| 欧美一区二区三级| 国产精品久久色| 国内精品视频一区二区三区| 日韩女同一区二区三区 | av在线亚洲色图| 日韩影院精彩在线| 欧美日韩色婷婷| 欧美极品欧美精品欧美视频| 亚洲资源视频| 亚洲色图 激情小说| 青青草社区在线| 黄色大片在线看| 久久精品国产亚洲5555| 国产九色精品成人porny| 色婷婷久久99综合精品jk白丝| 欧美激情高清视频| 久操手机在线视频| 久久福利免费视频| 一级特黄性色生活片| 国产精品国产亚洲伊人久久 | 一二三不卡视频| 精品久久国产视频| 亚洲网友自拍| 久久综合社区| 91污在线观看| 国产一区二区av| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 蜜臀av一区二区三区有限公司| 亚洲av成人精品一区二区三区在线播放| 亚洲色图16p| 不卡一区2区| 中文字幕一区av| 欧美二区乱c黑人| 日韩av综合在线观看| 99精品人妻国产毛片| baoyu777.永久免费视频| 黄页免费欧美| 处破女av一区二区| 日韩精品丝袜在线| 亚洲精品乱码久久久久久蜜桃91| 亚洲天堂av中文字幕| 91蝌蚪在线| 亚洲国产天堂| wwww国产精品欧美| 久久综合免费视频影院| heyzo国产| 国产男男gay体育生白袜| 丁香婷婷在线观看| 在线成人黄色| 91精品欧美一区二区三区综合在| 精品一区在线播放| 99久久99久久精品国产| 9自拍视频在线观看| 理论片一区二区在线| 中文字幕精品—区二区四季| 欧美激情aaaa| 性一交一黄一片| 九九热爱视频精品视频高清| 成人激情视屏| 成人av综合在线| 欧美成在线视频| 国产精品拍拍拍| 二区三区偷拍浴室洗澡视频| 欧美人体一区二区三区| 粉嫩在线一区二区三区视频| 精品国产区一区二区三区在线观看 | 亚洲国产精品久久久久秋霞蜜臀 | www.麻豆av.com| 婷婷精品在线观看| 舔着乳尖日韩一区| 好吊妞www.84com只有这里才有精品| 免费成年人视频在线观看| 夜夜嗨aⅴ免费视频| 婷婷六月综合| 欧美一卡2卡三卡4卡5免费| 午夜精品久久久久久久久| 欧美日韩卡一卡二| 色一情一区二区三区四区| 国产精品久久久久久久久久精爆| 国产污污在线观看| 一区久久精品| 精品国产乱码久久久久久蜜臀| 青草视频在线观看视频| 风流老熟女一区二区三区| 亚洲成人激情社区| 亚洲特黄一级片| 国产成人精品福利一区二区三区 | 中文字幕在线观看欧美| www视频在线看| 99国产一区二区三精品乱码| 国产精品第一视频| 日本在线一级片| av色图一区| 国产91在线观看| 国产精品美女久久久免费| 五月婷婷一区二区| av中文在线| av高清久久久| 国产精品视频999| 91看片在线播放| av在线播放资源| 国产xxx精品视频大全| 91国偷自产一区二区三区的观看方式| 国产精品久久AV无码| 黄色免费视频| 最新国产拍偷乱拍精品| 色偷偷av一区二区三区| 色哟哟无码精品一区二区三区| 男人插女人欧美| 久久三级视频| 欧美交受高潮1| 精品人妻伦九区久久aaa片| 在线看黄色av| 91色porny在线视频| 欧美第一淫aaasss性| 免费黄色在线网址| 日本视频在线免费观看| xnxx国产精品| 欧美极品日韩| 男女午夜激烈无遮挡| 岳的好大精品一区二区三区| 欧美精品一区二区三区久久久| 欧美一级xxxx| 免费高清特黄a大片| 久久久噜噜噜| 国产高清视频一区三区| 日日骚av一区二区| 成人黄色视屏网站| 欧美另类一区二区三区| 日日躁夜夜躁aaaabbbb| 猫咪av在线| 国产在线观看一区二区 | 亚洲国产日韩欧美| 日本欧美黄色| 黄色亚洲大片免费在线观看| 欧美黄色片在线观看| 久久一区二区三| japanese23hdxxxx日韩| 欧美日韩三级在线| aaa一级黄色片| 欧美色18zzzzxxxxx| 久久久久久免费| 亚洲v国产v| 99久久精品一区二区三区| 久久久久久色| 91牛牛免费视频|