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

Java11中Collections類的使用小結(jié)

 更新時(shí)間:2025年08月21日 08:21:45   作者:有夢想的攻城獅  
Java的Collections工具類提供靜態(tài)方法簡化集合操作,包括排序、搜索、反轉(zhuǎn)等算法封裝,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、核心作用與定義

Collections類是Java集合框架的核心工具類,位于java.util包中,提供了一系列靜態(tài)方法用于操作List、Set、Map等集合。其核心作用包括:

  • 簡化集合操作:如排序、搜索、反轉(zhuǎn)、填充等。
  • 線程安全支持:通過同步包裝器(如synchronizedList)實(shí)現(xiàn)線程安全。
  • 不可變集合創(chuàng)建:提供方法生成不可修改的集合視圖。
  • 算法復(fù)用:封裝常見集合操作算法,避免重復(fù)實(shí)現(xiàn)。

二、常用方法詳解

1.排序相關(guān)

  • sort(List<T> list)
    按自然順序升序排序列表,要求元素實(shí)現(xiàn)Comparable接口。

    List<Integer> numbers = Arrays.asList(4, 2, 5, 1, 3);
    Collections.sort(numbers); // 輸出 [1, 2, 3, 4, 5]
    
  • sort(List<T> list, Comparator<? super T> c)
    按指定比較器排序,支持自定義排序邏輯。

    Comparator<Integer> descComparator = (a, b) -> b - a;
    Collections.sort(numbers, descComparator); // 降序排序
    

2.反轉(zhuǎn)與隨機(jī)打亂

  • reverse(List<?> list)
    反轉(zhuǎn)列表元素順序。

    List<String> fruits = Arrays.asList("apple", "banana", "cherry");
    Collections.reverse(fruits); // 輸出 [cherry, banana, apple]
    
  • shuffle(List<?> list)
    隨機(jī)打亂列表元素(默認(rèn)使用隨機(jī)源)。

    Collections.shuffle(fruits); // 輸出順序隨機(jī),如 [banana, apple, cherry]
    

3.搜索與替換

  • binarySearch(List<?> list, T key)
    二分搜索,要求列表已排序。

    Collections.sort(numbers);
    int index = Collections.binarySearch(numbers, 4); // 返回索引3
    
  • replaceAll(List<T> list, T oldVal, T newVal)
    替換所有舊值為新值。

    List<String> words = Arrays.asList("hello", "world", "java");
    Collections.replaceAll(words, "java", "javafx"); // 輸出 [hello, world, javafx]
    

4.極值查找

  • min(Collection<? extends T> coll)
    返回集合最小元素。

    List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5, 9);
    int min = Collections.min(numbers); // 輸出1
    
  • max(Collection<? extends T> coll)
    返回集合最大元素。

    int max = Collections.max(numbers); // 輸出9
    

5.集合修改

  • fill(List<? super T> list, T obj)
    用指定元素填充列表。

    List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
    Collections.fill(list, "x"); // 輸出 [x, x, x]
    
  • copy(List<? super T> dest, List<? extends T> src)
    復(fù)制源列表到目標(biāo)列表(目標(biāo)需足夠長)。

    List<String> src = Arrays.asList("sun", "moon", "star");
    List<String> dest = new ArrayList<>(Arrays.asList("", "", ""));
    Collections.copy(dest, src); // 輸出 [sun, moon, star]
    

6.不可變集合

  • unmodifiableList(List<? extends T> list)
    返回不可修改的列表視圖,修改會拋出UnsupportedOperationException。
    List<String> original = new ArrayList<>(Arrays.asList("one", "two"));
    List<String> unmodifiable = Collections.unmodifiableList(original);
    // unmodifiable.add("three"); // 拋出異常
    

7.其他實(shí)用方法

  • frequency(Collection<?> c, Object o)
    統(tǒng)計(jì)元素出現(xiàn)次數(shù)。

    List<String> items = Arrays.asList("apple", "banana", "apple");
    int count = Collections.frequency(items, "apple"); // 輸出2
    
  • rotate(List<?>, int distance)
    循環(huán)移動元素(正數(shù)右移,負(fù)數(shù)左移)。

    List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
    Collections.rotate(list, 2); // 輸出 [4, 5, 1, 2, 3]
    

三、Java 11新增特性

1.集合工廠方法

  • List.of()、Set.of()、Map.of()
    快速創(chuàng)建不可變集合,支持1-10個(gè)元素的顯式聲明。

    List<String> list = List.of("Alice", "Bob", "Charlie"); // Java 11新增
    Set<Integer> set = Set.of(1, 2, 3);
    Map<String, Integer> map = Map.of("Alice", 25, "Bob", 30);
    
  • copyOf()
    復(fù)制集合為不可變形式,適用于已有集合。

    List<String> original = new ArrayList<>(Arrays.asList("a", "b"));
    List<String> copied = List.copyOf(original); // 返回不可變列表
    

2.方法增強(qiáng)

  • indexOfSubList(List<?>, List<?>)
    查找子列表首次出現(xiàn)的位置。
    List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
    List<Integer> subList = Arrays.asList(3, 4);
    int index = Collections.indexOfSubList(list, subList); // 返回2
    

四、與Java 8的差異

1.默認(rèn)垃圾收集器變更

  • Java 11:默認(rèn)使用G1 GC,優(yōu)化低延遲場景,支持并發(fā)壓縮和動態(tài)堆調(diào)整。
  • Java 8:默認(rèn)使用Parallel GC,強(qiáng)調(diào)高吞吐量。

2.集合API擴(kuò)展

  • Java 11新增集合工廠方法(如List.of()),簡化不可變集合創(chuàng)建。
  • Java 8需通過Collections.unmodifiableList手動包裝。

3.語言特性影響

  • Java 11支持局部變量類型推斷(var),但Collections方法參數(shù)仍需顯式類型。
    var list = List.of("a", "b"); // 有效
    Collections.sort(var list); // 無效,需顯式類型
    

五、最佳實(shí)踐建議

  1. 線程安全
    使用同步包裝器保護(hù)非線程安全集合:

    List<String> syncList = Collections.synchronizedList(new ArrayList<>());
    
  2. 不可變集合
    優(yōu)先使用List.of()Collections.unmodifiableList避免意外修改,提升代碼安全性。

  3. 性能優(yōu)化

    • 對大列表使用G1 GC,調(diào)整堆參數(shù)(如-XX:G1HeapRegionSize)。
    • 避免在頻繁修改的集合上使用不可變視圖。
  4. 算法選擇
    根據(jù)場景選擇合適方法:

    • 自然順序排序用sort(List),自定義排序用sort(List, Comparator)。
    • 查找極值時(shí),優(yōu)先使用min()/max()而非遍歷。

六、總結(jié)

Java 11的Collections類在保持核心功能穩(wěn)定的同時(shí),通過新增工廠方法和增強(qiáng)現(xiàn)有方法,提升了開發(fā)效率和代碼簡潔性。用戶應(yīng)結(jié)合具體場景選擇合適方法,并注意版本差異對代碼的影響,尤其是垃圾收集器和集合API的變化。

到此這篇關(guān)于Java11中Collections類的使用小結(jié)的文章就介紹到這了,更多相關(guān)Java11 Collections類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis通用Mapper和PageHelper的過程詳解

    MyBatis通用Mapper和PageHelper的過程詳解

    這篇文章主要介紹了MyBatis通用Mapper和PageHelper的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • java  實(shí)現(xiàn)輸出隨機(jī)圖片實(shí)例代碼

    java 實(shí)現(xiàn)輸出隨機(jī)圖片實(shí)例代碼

    這篇文章主要介紹了java 實(shí)現(xiàn)輸出隨機(jī)圖片實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Java讓泛型實(shí)例化的方法

    Java讓泛型實(shí)例化的方法

    這篇文章主要介紹了Java讓泛型實(shí)例化的方法,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • SpringAop源碼及調(diào)用過程概述

    SpringAop源碼及調(diào)用過程概述

    這篇文章主要介紹了SpringAop源碼及調(diào)用過程概述,Spring AOP(面向切面編程)是Spring框架的一個(gè)重要特性,它提供了一種在程序運(yùn)行期間動態(tài)地將額外的行為織入到代碼中的方式,需要的朋友可以參考下
    2023-10-10
  • 實(shí)例解析JAVA中代碼的加載順序

    實(shí)例解析JAVA中代碼的加載順序

    這篇文章主要介紹了舉例說明Java中代碼塊的執(zhí)行順序,需要的朋友可以參考下
    2017-04-04
  • SpringBoot Jackson日期格式化統(tǒng)一配置的實(shí)現(xiàn)

    SpringBoot Jackson日期格式化統(tǒng)一配置的實(shí)現(xiàn)

    Spring項(xiàng)目中經(jīng)常需要配置日期時(shí)間格式格式,本文主要介紹了SpringBoot Jackson日期格式化統(tǒng)一配置的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • SpringBoot中@ComponentScan的使用詳解

    SpringBoot中@ComponentScan的使用詳解

    這篇文章主要介紹了SpringBoot中@ComponentScan的使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • SpringBoot+Vue3整合SSE實(shí)現(xiàn)實(shí)時(shí)消息推送

    SpringBoot+Vue3整合SSE實(shí)現(xiàn)實(shí)時(shí)消息推送

    這篇文章主要為大家詳細(xì)介紹了SpringBoot+Vue3整合SSE實(shí)現(xiàn)實(shí)時(shí)消息推送的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2026-03-03
  • 詳解Mybatis核心配置文件

    詳解Mybatis核心配置文件

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著Mybatis核心配置文件展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Spring?@Cacheable注解類內(nèi)部調(diào)用失效的解決方案

    Spring?@Cacheable注解類內(nèi)部調(diào)用失效的解決方案

    這篇文章主要介紹了Spring?@Cacheable注解類內(nèi)部調(diào)用失效的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評論

容城县| 乐业县| 牟定县| 开封县| 巴青县| 彰武县| 肇州县| 建宁县| 盘锦市| 达拉特旗| 墨竹工卡县| 富裕县| 邓州市| 孟州市| 台前县| 漠河县| 奇台县| 博客| 嫩江县| 禄劝| 钟山县| 宝山区| 宜兰市| 上思县| 晋中市| 桐庐县| 自贡市| 闵行区| 大名县| 西华县| 榆林市| 始兴县| 东辽县| 桓台县| 芒康县| 永年县| 绥德县| 乌兰察布市| 岳普湖县| 佛山市| 黔西县|