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

Java?9中List.of()的使用示例及注意事項

 更新時間:2025年03月31日 10:48:35   作者:Anpunph.  
Java 9引入了一個新的靜態(tài)工廠方法List.of(),用于創(chuàng)建不可變的列表對象,這篇文章主要介紹了Java?9中List.of()的使用示例及注意事項的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

前言

List.of() 是 Java 9 引入的一個靜態(tài)方法,用于創(chuàng)建不可變的列表(ImmutableList)。這意味著一旦使用 List.of() 創(chuàng)建了列表,你就不能向其中添加、刪除或修改元素。這個方法提供了一種方便的方式來創(chuàng)建包含零個或多個元素的不可變列表。

List.of() 方法有幾個重載版本,允許你傳遞零個到十個元素作為參數。如果你需要創(chuàng)建包含超過十個元素的列表,你可以使用 List.of() 方法來組合較小的列表,或者使用其他集合構造方法(如 Arrays.asList() 后跟 Collections.unmodifiableList(),盡管這不是一個純粹的不可變列表,因為它仍然可以通過原始數組進行修改)。

基本用法

// 創(chuàng)建一個空的不可變列表  
List<String> emptyList = List.of();  
  
// 創(chuàng)建一個包含單個元素的不可變列表  
List<Integer> singleElementList = List.of(1);  
  
// 創(chuàng)建一個包含多個元素的不可變列表  
List<String> multipleElementsList = List.of("apple", "banana", "cherry");

注意事項

  • 不可變性:一旦創(chuàng)建,列表的內容就不能更改。嘗試添加、刪除或修改元素將導致 UnsupportedOperationException

  • 性能:由于不可變性,List.of() 創(chuàng)建的列表在性能上可能不是最優(yōu)的,特別是在進行大量修改操作時。然而,對于需要不可變集合的場景,這種方法提供了簡潔性和安全性。

  • 類型安全:由于 List.of() 是一個泛型方法,它可以確保列表的類型安全。

  • 使用場景List.of() 非常適用于創(chuàng)建常量列表、配置列表或作為方法參數傳遞的不可變列表。

  • 元素限制:直接通過 List.of() 方法最多可以傳遞十個元素。如果需要更多元素,請考慮使用其他集合構造方法或組合多個 List.of() 調用。

示例:組合多個 List.of() 調用

// 創(chuàng)建兩個較小的不可變列表  
List<Integer> firstHalf = List.of(1, 2, 3, 4);  
List<Integer> secondHalf = List.of(5, 6, 7, 8, 9, 10);  
  
// 使用 Stream 將它們組合成一個較大的不可變列表  
List<Integer> combinedList = Stream.concat(firstHalf.stream(), secondHalf.stream())  
    .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));  
  
// 注意:上面的 combinedList 實際上不是純粹的 List.of() 創(chuàng)建的不可變列表,  
// 但它通過使用 Collections.unmodifiableList() 達到了類似的效果。  
  
// 更簡潔但非純不可變的方法(如果不需要完全的不可變性)  
List<Integer> simplerCombinedList = new ArrayList<>(firstHalf);  
simplerCombinedList.addAll(secondHalf);  
// 注意:simplerCombinedList 是可變的

上面的 simplerCombinedList 示例是可變的,而 combinedList 示例則通過 Collections.unmodifiableList() 嘗試創(chuàng)建一個不可變列表,但它不是由 List.of() 直接創(chuàng)建的。對于完全由 List.of() 創(chuàng)建的不可變列表,你應該直接傳遞元素給 List.of(),或者如果元素數量超過限制,則考慮使用其他設計。

附:List.of() 和 Array.asList() 的區(qū)別

List.of()和 Array.asList()都是 Java 中用于創(chuàng)建列表的兩種不同方法,它們都可以用來創(chuàng)建列表。但它們也有一些顯著的區(qū)別,下面筆者將講解下它們的主要區(qū)別

1. 不可變性和可變性

List.of()

  • 創(chuàng)建出來的列表是不可變的
  • 此列表一旦創(chuàng)建,列表中的元素就不能被修改(添加、刪除或更改元素)
  • 當我們嘗試修改此方法構造出來的列表時,會報錯UnsupportedOperationException

Arrays.asList()

  • 創(chuàng)建的列表是基于原始數組的固定大小的列表(fixed-size)
  • 列表的大小是固定的,不能添加或刪除元素
  • 但是,列表中的元素是可變的,可以修改元素
  • 底層數組的內容可以被間接修改,例如,如果列表包含的是可變對象(如ArrayList或自定義對象),那么這些對象的內部狀態(tài)可以被更改

2. 性能對比

List.of()

  • 針對少量元素進行了優(yōu)化,通常更適合創(chuàng)建固定且不可變的少量元素列表
  • 內部實現可能根據元素數量不同而有所不同(例如,針對單個元素、兩個元素等使用專門的類)

Arrays.asList()

  • 基于現有的數組實現,因此性能開銷較低,特別是在處理大量元素時
  • 但是,由于它是固定大小的,如果需要動態(tài)調整列表大小,性能可能不如ArrayList

3. 適用場景

List.of()

  • 適用于需要不可變列表的場景。例如作為常量、配置數據或任何不希望被修改的數據集合

Arrays.asList()

  • 適用于需要將現有數組轉換為列表的場景,或者當你知道列表大小不會改變但需要列表功能(如迭代、索引訪問)時

總結

到此這篇關于Java 9中List.of()的使用示例及注意事項的文章就介紹到這了,更多相關Java9 List.of()的使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Gradle構建Java項目指定JDK版本與編譯參數實戰(zhàn)演練

    Gradle構建Java項目指定JDK版本與編譯參數實戰(zhàn)演練

    Gradle是一種流行的構建工具,廣泛用于Java、Android和其他項目,通過配置環(huán)境變量,您可以更好地控制Gradle構建過程,這篇文章主要介紹了Gradle構建Java項目指定JDK版本與編譯參數的相關資料,需要的朋友可以參考下
    2026-04-04
  • java實現遠程桌面的實例代碼

    java實現遠程桌面的實例代碼

    下面小編就為大家分享一篇java實現遠程桌面的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • JAVA 聚焦 OutOfMemoryError 異常問題記錄

    JAVA 聚焦 OutOfMemoryError 異常問題記錄

    在 Java 開發(fā)中,內存溢出異常是影響程序穩(wěn)定性的關鍵問題,了解其原理和應對方法,對開發(fā)者至關重要,這篇文章主要介紹了JAVA聚焦 OutOfMemoryError 異常,需要的朋友可以參考下
    2025-04-04
  • Java抽象類和普通類區(qū)別、 數組跟List的區(qū)別解析

    Java抽象類和普通類區(qū)別、 數組跟List的區(qū)別解析

    這篇文章主要介紹了Java抽象類和普通類區(qū)別、 數組跟List的區(qū)別,在這里需要注意List是一個接口,不能直接實例化,需要使用具體的實現類來創(chuàng)建對象,本文結合示例代碼介紹的非常詳細,需要的朋友參考下吧
    2023-09-09
  • java WSDL接口webService實現方式

    java WSDL接口webService實現方式

    這篇文章主要為大家詳細介紹了java WSDL接口webService實現方式的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 詳解Spring Cloud Gateway基于服務發(fā)現的默認路由規(guī)則

    詳解Spring Cloud Gateway基于服務發(fā)現的默認路由規(guī)則

    這篇文章主要介紹了詳解Spring Cloud Gateway基于服務發(fā)現的默認路由規(guī)則,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • SpringSecurity整合JWT的使用示例

    SpringSecurity整合JWT的使用示例

    本文主要介紹了SpringSecurity整合JWT的使用示例,整合Spring?Security和JWT,可以使我們的應用程序更加安全和高效,感興趣的可以了解一下
    2023-11-11
  • Java實現英文猜詞游戲的示例代碼

    Java實現英文猜詞游戲的示例代碼

    這篇文章主要介紹了如何用Java編寫一個英文猜詞游戲,可以用來背英語單詞。文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-02-02
  • SpringBoot帶你實現一個點餐小程序

    SpringBoot帶你實現一個點餐小程序

    有個小伙伴臨時找到我,要開發(fā)一個點餐的系統(tǒng),時間比較著急,給了2天的時間。馬馬虎虎的搞出來了,頭發(fā)掉了一撮!下面介紹下本系統(tǒng),感興趣的小伙伴,可以參考開發(fā)下
    2022-07-07
  • 代碼生成器MyBatisX:自動生成代碼方式

    代碼生成器MyBatisX:自動生成代碼方式

    MyBatisX是一款提高開發(fā)效率的插件,可以自動生成Mapper、XML和Java實體類代碼,并支持數據庫表的重置和JAP提示,安裝步驟簡單,只需在IDEA的Plugin市場搜索并安裝MyBatisX,然后打開數據庫窗口選擇表進行生成即可
    2024-11-11

最新評論

亚东县| 黄石市| 涿州市| 青铜峡市| 方山县| 莒南县| 通化市| 江都市| 红桥区| 天津市| 璧山县| 海阳市| 北票市| 保山市| 河间市| 尼木县| 施秉县| 清远市| 文登市| 木兰县| 本溪| 平塘县| 崇文区| 临城县| 奈曼旗| 龙山县| 汉中市| 鄂托克前旗| 南丹县| 尤溪县| 宜兴市| 收藏| 鲜城| 利川市| 宕昌县| 乐至县| 凌海市| 云梦县| 安义县| 昔阳县| 昭平县|