亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring?Data?JPA實現持久化存儲數據到數據庫的示例代碼

    Spring?Data?JPA實現持久化存儲數據到數據庫的示例代碼

    Spring Data JPA是Spring基于JPA規(guī)范的基礎上封裝的?套 JPA 應?框架,可使開發(fā)者?極簡的代碼即可實現對數據庫的訪問和操作。本文我們來了解如何用Spring?Data?JPA框架實現數據持久化存儲到數據庫,感興趣的可以了解一下
    2022-04-04
  • Spring boot搭建web應用集成thymeleaf模板實現登陸

    Spring boot搭建web應用集成thymeleaf模板實現登陸

    這篇文章主要介紹了Spring boot搭建web應用集成thymeleaf模板實現登陸,頁面使用bootstrap,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 解讀@Data注解父子類繼承的問題

    解讀@Data注解父子類繼承的問題

    在Java開發(fā)中,使用Lombok庫的@Data注解簡化了代碼,但在父子類繼承關系中使用@Data注解時會遇到問題,主要問題是:當父類和子類都使用@Data注解時,會導致equals方法不對稱,解決方案是在子類中使用@EqualsAndHashCode注解
    2024-11-11
  • SpringBoot中整合Shiro實現權限管理的示例代碼

    SpringBoot中整合Shiro實現權限管理的示例代碼

    這篇文章主要介紹了SpringBoot中整合Shiro實現權限管理的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • springboot脫敏控件升級支持深度脫敏

    springboot脫敏控件升級支持深度脫敏

    這篇文章主要為大家介紹了springboot脫敏控件升級支持深度脫敏,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Spring?AOP實現多數據源動態(tài)切換

    Spring?AOP實現多數據源動態(tài)切換

    本文主要介紹了Spring?AOP實現多數據源動態(tài)切換,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 詳細聊一聊JavaWeb中的Request和Response

    詳細聊一聊JavaWeb中的Request和Response

    這篇文章主要給大家介紹了關于JavaWeb中Request和Response的相關資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2023-02-02
  • Java設置PDF有序和無序列表的知識點總結

    Java設置PDF有序和無序列表的知識點總結

    在本篇文章中小編給大家整理了關于Java設置PDF有序和無序列表的知識點,需要的朋友們參考下。
    2019-03-03
  • SpringBoot配置文件、多環(huán)境配置、讀取配置的4種實現方式

    SpringBoot配置文件、多環(huán)境配置、讀取配置的4種實現方式

    SpringBoot支持多種配置文件位置和格式,其中application.properties和application.yml是默認加載的文件,配置文件可以根據環(huán)境通過spring.profiles.active屬性進行區(qū)分,命令行參數具有最高優(yōu)先級,可覆蓋其他所有配置
    2024-09-09
  • springboot如何讀取配置文件到靜態(tài)工具類

    springboot如何讀取配置文件到靜態(tài)工具類

    這篇文章主要介紹了springboot實現讀取配置文件到靜態(tài)工具類方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評論