最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的集合工具類(lèi)Collections詳解

 更新時(shí)間:2024年01月05日 09:56:06   作者:時(shí)間不會(huì)賴(lài)著不走  
這篇文章主要介紹了Java中的集合工具類(lèi)Collections詳解,java.utils.Collections是集合工具類(lèi),用來(lái)對(duì)集合進(jìn)行操作,不是Collection集合的根接口,這個(gè)要區(qū)分開(kāi)來(lái),需要的朋友可以參考下

Collections

java.utils.Collections是集合工具類(lèi),用來(lái)對(duì)集合進(jìn)行操作。不是Collection集合的根接口,這個(gè)要區(qū)分開(kāi)來(lái)。 部分方法如下:

  • public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。
  • public static void shuffle(List<?> list) 打亂順序:打亂集合順序。
  • public static <T> void sort(List<T> list):將集合中元素按照默認(rèn)規(guī)則排序。
  • public static <T> void sort(List<T> list,Comparator<? super T> ):將集合中元素按照指定規(guī)則排序。

使用Collections以后更加方便的創(chuàng)建添加元素,以及排序了,自帶排序方法。ArrayList是沒(méi)有自帶的排序方法。

public class CollectionsDemo {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        //原來(lái)寫(xiě)法
        //list.add(12);
        //list.add(14);
        //list.add(15);
        //list.add(1000);
        //采用工具類(lèi) 完成 往集合中添加元素  
        Collections.addAll(list, 5, 222, 1,2);
        System.out.println(list);
        //排序方法 
        Collections.sort(list);
        System.out.println(list);
    }
}

結(jié)果:

[5, 222, 1, 2]
[1, 2, 5, 222]

public static <T> void sort(List<T> list,Comparator<? super T> ):將集合中元素按照指定規(guī)則排序。接下來(lái)講解一下指定規(guī)則的排列。

Comparator比較器

public static <T> void sort(List<T> list):將集合中元素按照默認(rèn)規(guī)則排序。

public class CollectionsDemo2 {
    public static void main(String[] args) {
        ArrayList<String>  list = new ArrayList<String>();
        list.add("cba");
        list.add("aba");
        list.add("sba");
        list.add("nba");
        //排序方法
        Collections.sort(list);
        System.out.println(list);
    }
}

結(jié)果輸出為:

[aba, cba, nba, sba]

我們使用的是默認(rèn)的規(guī)則完成字符串的排序,那么默認(rèn)規(guī)則是怎么定義出來(lái)的呢?

說(shuō)到排序了,簡(jiǎn)單的說(shuō)就是兩個(gè)對(duì)象之間比較大小,那么在JAVA中提供了兩種比較實(shí)現(xiàn)的方式,一種是比較死板的采用java.lang.Comparable接口去實(shí)現(xiàn),一種是靈活的當(dāng)我需要做排序的時(shí)候在去選擇的java.util.Comparator接口完成。

那么我們采用的public static <T> void sort(List<T> list)這個(gè)方法完成的排序,實(shí)際上要求了被排序的類(lèi)型需要實(shí)現(xiàn)Comparable接口完成比較的功能,在String類(lèi)型上如下:

public final class String implements java.io.Serializable, Comparable<String>, CharSequence {

String類(lèi)實(shí)現(xiàn)了這個(gè)接口,并完成了比較規(guī)則的定義,但是這樣就把這種規(guī)則寫(xiě)死了,那比如我想要字符串按照第一個(gè)字符降序排列,那么這樣就要修改String的源代碼,這是不可能的了,那么這個(gè)時(shí)候我們可以使用

public static <T> void sort(List<T> list,Comparator<? super T> )方法靈活的完成,這個(gè)里面就涉及到了Comparator這個(gè)接口,位于位于java.util包下,排序是comparator能實(shí)現(xiàn)的功能之一,該接口代表一個(gè)比較器,比較器具有可比性!顧名思義就是做排序的,通俗地講需要比較兩個(gè)對(duì)象誰(shuí)排在前誰(shuí)排在后,那么比較的方法就是:

public int compare(String o1, String o2):比較其兩個(gè)參數(shù)的順序。

  • 兩個(gè)對(duì)象比較的結(jié)果有三種:大于,等于,小于。
  • 如果要按照升序排序,
  • 則o1 小于o2,返回(負(fù)數(shù)),相等返回0,01大于02返回(正數(shù))
  • 如果要按照降序排序
  • 則o1 小于o2,返回(正數(shù)),相等返回0,01大于02返回(負(fù)數(shù))

操作如下:

public class CollectionsDemo3 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("cba");
        list.add("aba");
        list.add("sba");
        list.add("nba");
        //排序方法  按照第一個(gè)單詞的降序
        Collections.sort(list, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o2.charAt(0) - o1.charAt(0);
            }
        });
        System.out.println(list);
    }
}

結(jié)果如下:

[sba, nba, cba, aba]

Comparable和Comparator兩個(gè)接口的區(qū)別

Comparable:強(qiáng)行對(duì)實(shí)現(xiàn)它的每個(gè)類(lèi)的對(duì)象進(jìn)行整體排序。這種排序被稱(chēng)為類(lèi)的自然排序,類(lèi)的compareTo方法被稱(chēng)為它的自然比較方法。只能在類(lèi)中實(shí)現(xiàn)compareTo()一次,不能經(jīng)常修改類(lèi)的代碼實(shí)現(xiàn)自己想要的排序。實(shí)現(xiàn)此接口的對(duì)象列表(和數(shù)組)可以通過(guò)Collections.sort(和Arrays.sort)進(jìn)行自動(dòng)排序,對(duì)象可以用作有序映射中的鍵或有序集合中的元素,無(wú)需指定比較器。

Comparator強(qiáng)行對(duì)某個(gè)對(duì)象進(jìn)行整體排序。可以將Comparator 傳遞給sort方法(如Collections.sort或 Arrays.sort),從而允許在排序順序上實(shí)現(xiàn)精確控制。還可以使用Comparator來(lái)控制某些數(shù)據(jù)結(jié)構(gòu)(如有序set或有序映射)的順序,或者為那些沒(méi)有自然順序的對(duì)象collection提供排序。

總結(jié)

Comparable是Collections內(nèi)部默認(rèn)的排序方法.然而Comparator是可以按照自己設(shè)計(jì)的方法來(lái)進(jìn)行排序。

到此這篇關(guān)于Java中的集合工具類(lèi)Collections詳解的文章就介紹到這了,更多相關(guān)Java的Collections工具類(lèi)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Swagger實(shí)現(xiàn)接口版本號(hào)管理方式

    使用Swagger實(shí)現(xiàn)接口版本號(hào)管理方式

    這篇文章主要介紹了使用Swagger實(shí)現(xiàn)接口版本號(hào)管理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java編程經(jīng)典小游戲設(shè)計(jì)-打磚塊小游戲源碼

    Java編程經(jīng)典小游戲設(shè)計(jì)-打磚塊小游戲源碼

    這篇文章主要介紹了Java編程經(jīng)典小游戲設(shè)計(jì)-打磚塊小游戲源碼,還是挺不錯(cuò)的,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Springboot使用MybatisPlus實(shí)現(xiàn)mysql樂(lè)觀(guān)鎖

    Springboot使用MybatisPlus實(shí)現(xiàn)mysql樂(lè)觀(guān)鎖

    MySQL中的樂(lè)觀(guān)鎖(Optimistic?Locking)是一種并發(fā)控制策略,本文將使用Springboot和MybatisPlus實(shí)現(xiàn)MySQL中的樂(lè)觀(guān)鎖,需要的可以參考下
    2024-12-12
  • Java Spring 中的監(jiān)聽(tīng)器Listener詳解與實(shí)戰(zhàn)教程

    Java Spring 中的監(jiān)聽(tīng)器Listener詳解與實(shí)戰(zhàn)教程

    Spring 提供了多種監(jiān)聽(tīng)器機(jī)制,可以用于監(jiān)聽(tīng)?wèi)?yīng)用生命周期、會(huì)話(huà)生命周期和請(qǐng)求處理過(guò)程中的事件,這篇文章主要介紹了Java Spring 之監(jiān)聽(tīng)器(Listener)詳解與實(shí)戰(zhàn),需要的朋友可以參考下
    2025-06-06
  • 詳解JAVA中static的作用

    詳解JAVA中static的作用

    這篇文章主要介紹了JAVA中static的作用,文中講解非常細(xì)致,代碼幫助大家更好的理解,感興趣的朋友可以了解下
    2020-06-06
  • MySQL數(shù)據(jù)庫(kù)之Purge死鎖問(wèn)題解析

    MySQL數(shù)據(jù)庫(kù)之Purge死鎖問(wèn)題解析

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)之Purge死鎖問(wèn)題解析的相關(guān)資料,需要的朋友可以參考下
    2017-11-11
  • SpringBoot整合iText7導(dǎo)出PDF及性能優(yōu)化方式

    SpringBoot整合iText7導(dǎo)出PDF及性能優(yōu)化方式

    在SpringBoot項(xiàng)目中整合iText7庫(kù)以導(dǎo)出PDF文件,不僅能夠滿(mǎn)足報(bào)告生成需求,而且可以處理復(fù)雜的文檔布局與樣式,整合步驟包括添加Maven依賴(lài)、編寫(xiě)PDF生成代碼,性能優(yōu)化方面,建議使用流式處理、緩存樣式與字體、優(yōu)化HTML/CSS結(jié)構(gòu)、采用異步處理
    2024-09-09
  • 不同Java泛型構(gòu)造函數(shù)的詳解

    不同Java泛型構(gòu)造函數(shù)的詳解

    這篇文章主要介紹了不同Java泛型構(gòu)造函數(shù)的詳解,因?yàn)閷?duì)象是應(yīng)用類(lèi)型,對(duì)象賦值是指向同一個(gè)對(duì)象,所以如果需要保存對(duì)象某個(gè)時(shí)刻的狀態(tài),就需要構(gòu)造函數(shù)來(lái)new一個(gè)新的對(duì)象。下面我們來(lái)詳細(xì)了解一下吧
    2019-06-06
  • java實(shí)現(xiàn)多人聊天室可視化

    java實(shí)現(xiàn)多人聊天室可視化

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)多人聊天室可視化,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 如何在logback日志配置里獲取服務(wù)器ip和端口

    如何在logback日志配置里獲取服務(wù)器ip和端口

    這篇文章主要介紹了如何在logback日志配置里獲取服務(wù)器ip和端口的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評(píng)論

纳雍县| 淮安市| 监利县| 渭源县| 新民市| 南靖县| 鲁山县| 芒康县| 永兴县| 利川市| 伊宁市| 汉源县| 垣曲县| 南京市| 遂平县| 浪卡子县| 成武县| 嘉峪关市| 赤壁市| 南川市| 讷河市| 东宁县| 平定县| 青河县| 保山市| 虞城县| 本溪市| 城市| 怀宁县| 兴安县| 天等县| 五华县| 定南县| 琼海市| 江阴市| 台北县| 巫山县| 农安县| 容城县| 台山市| 乌海市|