日韩精品在线看_黄色成人美女网站_偷窥自拍亚洲色图精选_五月激情综合

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

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

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種稱為自然排序,參與排序的對象需實現(xiàn)comparable接口,重寫其compareTo()方法,方法體中實現(xiàn)對象的比較大小規(guī)則,示例如下:

IT技術(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類型的對象...");

 

    }

 

}

 

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

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

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

 

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

 

    //且只執(zhí)行一次.@Before注解標注的方法會在每個測試方法之前執(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>

 

運行結(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)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為您服務(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è)計要多久?報速成班靠譜嗎?

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

相關(guān)問題

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

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

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

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

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

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

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

int 和 Integer 的基本區(qū)別有如下?點: int 是基本數(shù)據(jù)類型,...

JVM模型的介紹二

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

JVM模型的介紹一

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

測一測
你知道多少IT梗

日韩精品在线看_黄色成人美女网站_偷窥自拍亚洲色图精选_五月激情综合
久久久国产成人精品| 久久综合精品国产一区二区三区| 国产亚洲永久域名| 国产精品热久久久久夜色精品三区| 国产精品xxx在线观看www| 国产欧美日本在线| 在线观看亚洲a| 一区二区电影免费观看| 销魂美女一区二区三区视频在线| 久久精品在线播放| 欧美精品一区在线发布| 国产精品久久久久永久免费观看| 国产亚洲福利社区一区| 亚洲欧洲精品一区二区精品久久久| 99热在线精品观看| 欧美一区二区三区在线观看| 另类专区欧美制服同性| 欧美午夜一区二区| 狠狠综合久久| 一本在线高清不卡dvd| 久久久久国产免费免费| 欧美日韩国产三级| 国产综合激情| 一区二区三区视频在线 | 亚洲欧洲日本专区| 亚洲欧美日本视频在线观看| 久久亚洲高清| 国产精品高潮呻吟久久av无限| 精品成人在线视频| 欧美色精品天天在线观看视频 | 在线播放视频一区| 99精品视频免费| 久久久精品国产免大香伊| 欧美日韩亚洲综合| 亚洲成人在线网站| 先锋影音久久久| 欧美日韩亚洲高清| 亚洲国产老妈| 欧美在线高清| 国产精品久久激情| 亚洲精选中文字幕| 久久青草福利网站| 国产欧美亚洲精品| 亚洲一级黄色av| 欧美区二区三区| 亚洲成在线观看| 久久精品卡一| 国产嫩草影院久久久久| 在线亚洲精品| 欧美精品在线免费播放| 一区二区欧美日韩视频| 国产精品久在线观看| 韩国av一区二区三区| 中文国产一区| 欧美精品成人一区二区在线观看 | 国产自产精品| 亚洲一区二区精品视频| 欧美破处大片在线视频| 亚洲国产精品999| 久久精品中文| 国产偷久久久精品专区| 亚洲欧美www| 国产精品国产精品| 亚洲深夜福利| 欧美日韩亚洲免费| 日韩一区二区电影网| 免费成人高清视频| 亚洲成在人线av| 久久久天天操| 国产一区91| 久久er精品视频| 国产精品热久久久久夜色精品三区| 一区二区亚洲精品国产| 久久精品国产综合精品| 国产亚洲精品7777| 欧美在线观看一区二区三区| 国产伦精品一区二区三区照片91| 亚洲午夜精品国产| 国产精品久久久久9999高清| 亚洲一区二区精品在线| 国产精品扒开腿爽爽爽视频| 一本久久a久久免费精品不卡| 欧美日产国产成人免费图片| 日韩视频在线免费| 欧美日本一区| 亚洲一区二区伦理| 国产精品一区一区三区| 欧美在线亚洲综合一区| 国产一区二区久久| 久久女同互慰一区二区三区| 在线观看国产欧美| 欧美成人国产| 99视频精品全部免费在线| 欧美日韩国产精品一区| 中文在线不卡| 国产精品一区二区黑丝| 欧美一级一区| 一区二区三区在线免费视频| 久久综合伊人77777| 亚洲精品免费在线观看| 欧美视频在线免费看| 香蕉久久夜色精品| 精品999网站| 亚洲韩国青草视频| 欧美啪啪一区| 亚洲性视频h| 国产亚洲精品久久久久动| 久久综合色综合88| 日韩系列欧美系列| 国产精品亚洲人在线观看| 久久精品视频99| 亚洲狠狠婷婷| 欧美日韩三区四区| 性欧美1819性猛交| 亚洲国产女人aaa毛片在线| 欧美男人的天堂| 午夜在线视频一区二区区别| 伊人久久婷婷| 欧美日韩一区二区三区在线 | 午夜精品一区二区三区电影天堂| 国产日韩亚洲| 欧美国产亚洲另类动漫| 亚洲一区二区精品在线观看| 国产视频一区在线观看一区免费 | 国产精品自拍一区| 久久久久国产精品人| 亚洲乱码国产乱码精品精| 国产精品中文在线| 欧美大片在线观看| 午夜欧美视频| 亚洲黄色尤物视频| 国产精品一区二区视频| 美乳少妇欧美精品| 亚洲一区综合| 亚洲国产精品悠悠久久琪琪| 国产精品av一区二区| 麻豆国产va免费精品高清在线| 中文欧美字幕免费| 亚洲第一区在线| 国产精品自拍在线| 欧美日本在线| 久久欧美中文字幕| 亚洲永久字幕| 亚洲精品国产欧美| 国产主播一区二区| 欧美无乱码久久久免费午夜一区| 久久精品中文字幕一区| 这里是久久伊人| 亚洲国产精品一区在线观看不卡| 国产精品嫩草99a| 欧美激情a∨在线视频播放| 久久国产成人| 亚洲影音一区| 亚洲三级免费电影| 国产真实乱偷精品视频免| 欧美三级视频在线播放| 欧美69wwwcom| 久久久久国产精品一区| 午夜精品电影| 在线一区二区三区四区| 国产午夜精品美女毛片视频| 久久深夜福利| 亚洲一区综合| 亚洲日本一区二区三区| 国产在线精品一区二区中文| 欧美视频中文字幕在线| 免费短视频成人日韩| 久久av一区二区三区| 亚洲一区二区三区四区中文| 亚洲激情一区二区| 狠狠色丁香婷综合久久| 国产精品一区免费观看| 欧美午夜欧美| 欧美日韩国产一级| 免费成人在线视频网站| 久久精品日韩| 欧美诱惑福利视频| 亚洲免费一在线| 一本一本久久| 亚洲精品久久久久久下一站| 黑人巨大精品欧美一区二区小视频| 国产精品久久久久久久浪潮网站 | 老司机午夜免费精品视频| 欧美在线你懂的| 午夜精品美女久久久久av福利| 中日韩男男gay无套| 99国产精品久久久久久久久久| 亚洲黄色小视频| 91久久精品一区| 亚洲国产小视频| 在线日韩欧美| 亚洲第一精品福利| 樱花yy私人影院亚洲| 精品福利免费观看| 在线观看不卡av| 亚洲缚视频在线观看| 亚洲第一网站| 亚洲国产欧美精品| 亚洲级视频在线观看免费1级| 亚洲国产成人porn| 亚洲精品1234| 亚洲精品国精品久久99热一| 亚洲日本成人网| 99精品视频一区二区三区|