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

Java中的集合工具類Collections詳解

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

Collections

java.utils.Collections是集合工具類,用來對集合進行操作。不是Collection集合的根接口,這個要區(qū)分開來。 部分方法如下:

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

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

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

結果:

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

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

Comparator比較器

public static <T> void sort(List<T> list):將集合中元素按照默認規(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);
    }
}

結果輸出為:

[aba, cba, nba, sba]

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

說到排序了,簡單的說就是兩個對象之間比較大小,那么在JAVA中提供了兩種比較實現的方式,一種是比較死板的采用java.lang.Comparable接口去實現,一種是靈活的當我需要做排序的時候在去選擇的java.util.Comparator接口完成。

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

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

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

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

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

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

操作如下:

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");
        //排序方法  按照第一個單詞的降序
        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);
    }
}

結果如下:

[sba, nba, cba, aba]

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

Comparable:強行對實現它的每個類的對象進行整體排序。這種排序被稱為類的自然排序,類的compareTo方法被稱為它的自然比較方法。只能在類中實現compareTo()一次,不能經常修改類的代碼實現自己想要的排序。實現此接口的對象列表(和數組)可以通過Collections.sort(和Arrays.sort)進行自動排序,對象可以用作有序映射中的鍵或有序集合中的元素,無需指定比較器。

Comparator強行對某個對象進行整體排序??梢詫omparator 傳遞給sort方法(如Collections.sort或 Arrays.sort),從而允許在排序順序上實現精確控制。還可以使用Comparator來控制某些數據結構(如有序set或有序映射)的順序,或者為那些沒有自然順序的對象collection提供排序。

總結

Comparable是Collections內部默認的排序方法.然而Comparator是可以按照自己設計的方法來進行排序。

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

相關文章

  • 使用Swagger實現接口版本號管理方式

    使用Swagger實現接口版本號管理方式

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

    Java編程經典小游戲設計-打磚塊小游戲源碼

    這篇文章主要介紹了Java編程經典小游戲設計-打磚塊小游戲源碼,還是挺不錯的,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Springboot使用MybatisPlus實現mysql樂觀鎖

    Springboot使用MybatisPlus實現mysql樂觀鎖

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

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

    Spring 提供了多種監(jiān)聽器機制,可以用于監(jiān)聽應用生命周期、會話生命周期和請求處理過程中的事件,這篇文章主要介紹了Java Spring 之監(jiān)聽器(Listener)詳解與實戰(zhàn),需要的朋友可以參考下
    2025-06-06
  • 詳解JAVA中static的作用

    詳解JAVA中static的作用

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

    MySQL數據庫之Purge死鎖問題解析

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

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

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

    不同Java泛型構造函數的詳解

    這篇文章主要介紹了不同Java泛型構造函數的詳解,因為對象是應用類型,對象賦值是指向同一個對象,所以如果需要保存對象某個時刻的狀態(tài),就需要構造函數來new一個新的對象。下面我們來詳細了解一下吧
    2019-06-06
  • java實現多人聊天室可視化

    java實現多人聊天室可視化

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

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

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

最新評論

舒兰市| 正镶白旗| 临江市| 呼伦贝尔市| 乌海市| 榆林市| 阿荣旗| 敦煌市| 宣汉县| 保山市| 永福县| 桓仁| 潮州市| 涟水县| 房山区| 阿图什市| 滦平县| 广东省| 门头沟区| 淳安县| 玉林市| 府谷县| 新田县| 佛学| 宜兴市| 肥城市| 垫江县| 武功县| 时尚| 霍州市| 班玛县| 大兴区| 雷波县| 武山县| 淳化县| 沈丘县| 浦县| 依安县| 台东市| 隆德县| 多伦县|