List.of() VS Arrays.asList()
簡介
Java 提供了幾種用於建立列表的方便方法,包括 List.of
和 Arrays.aslist
。儘管這兩種方法都可以很簡單的建立集合物件,但它們實際上是有一些顯著差異的。本文將介紹 Java 中的 List.of()
和 Arrays.aslist()
之間的差異,並講解它們的應用場景。最後,我們將清楚地瞭解何時使用哪方法以及它們之間有何不同。
List.of()
List.of()
是 Java 9 中引入的工廠方法,用於建立包含指定元素的不可變列表。以下是一些需要注意的要點:
不可變性: List.of()
建立的集合是不可變的,這意味著它的大小和元素在建立後不能修改。固定大小:建立的集合具有固定大小,不支援新增或刪除元素。 空值:建立的集合中不允許存放空元素。如果嘗試新增 null,則會丟擲 NullPointerException
。
舉例:
List<String> immutable_list = List.of("apple", "banana", "orange");
Arrays.asList()
Arrays.asList()
是自 Java 早期版本以來就可用的方法,它提供了一種建立由指定陣列支援的固定大小列表的便捷方法。我們來看看它的特點:
可修改性: Arrays.asList()
建立的集合是可修改的,允許僅更新其元素而不能新增元素。由陣列支援:集合由原始陣列支援,因此對列表元素的任何更改都會影響底層陣列,反之亦然。 固定大小限制: Arrays.asList()
建立的集合的大小是固定的。為了防止集合被修改,新增或刪除元素時會丟擲UnsupportedOperationException
異常。空值:與 List.of()
不同,Arrays.asList()
允許新增空元素。
舉例:
List<String> mutable_list = Arrays.asList("red", "green", "blue");
應用場景
現在讓我們瞭解 List.of()
和 Arrays.asList()
的應用場景:
List.of()
當我們需要具有固定元素個數的不可變集合時,此方法是理想的選擇。它會確保集合的完整性並防止意外修改。
import java.util.List;
public class ListOfExample {
public static void main(String[] args) {
String[] colorsArray = { "Red", "Green", "Blue" };
List<String> colors = List.of(colorsArray);
colorsArray[0] = "Yellow";
// Accessing elements in the original array
System.out.println(colors.get(0).equals(colorsArray[0])); // Output: false
System.out.println(colors.get(1).equals(colorsArray[1])); // Output: true
System.out.println(colors.get(2).equals(colorsArray[2])); // Output: true
}
}
在上面的示例中,List.of()
用於建立不可變的顏色列表。任何透過新增或刪除元素來修改列表的嘗試都將導致丟擲異常。
Arrays.asList()
當我們想要由指定陣列支援的固定大小(可序列化)集合時,請使用此方法。對返回集合的任何更改也將寫入原始陣列。
import java.util.Arrays;
import java.util.List;
public class ArraysAsListExample {
public static void main(String[] args) {
String[] colorsArray = {"Red", "Green", "Blue"};
List<String> colors = Arrays.asList(colorsArray);
// Modifying the list (and array)
colors.set(0, "Yellow");
// Accessing elements in the original array
System.out.println(colors.get(0).equals(colorsArray[0])); // Output: true
System.out.println(colors.get(1).equals(colorsArray[1])); // Output: true
System.out.println(colors.get(2).equals(colorsArray[2])); // Output: true
}
}
本文翻譯自國外論壇 medium,原文地址:
總結
瞭解 List.of()
和 Arrays.asList()
之間的區別對於 Java 開發人員至關重要。List.of()
建立具有固定大小的不可變集合,而 Arrays.asList()
生成的是由陣列支援的可修改集合。透過考慮這兩種方法的特點以及應用場景,我們可以在特定的程式設計需求場景選擇適當的方法。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024922/viewspace-2989503/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一個 List.of 引發的“血案”
- Arrays.asList():使用指南
- Arrays.asList存在的坑
- Arrays.asList()是個坑
- Java踩坑記系列之Arrays.AsListJava
- Arrays.asList()使用異常:java.lang.UnsupportedOperationExceptionJavaException
- java原始碼分析 Arrays.asList()與Collections.unmodifiableList()Java原始碼
- 關於Arrays.asList返回List無法新增和刪除?
- 為什麼要謹慎使用Arrays.asList、ArrayList的subList?
- Playwright VS Selenium VS Puppeteer VS Cypress
- vs 2017 vs code
- Airflow vs. Luigi vs. Argo vs. MLFlow vs. KubeFlowAIUIGo
- Axum vs Actix vs Rocket
- RDBMS VS XML VS NoSQLXMLSQL
- 如何解除安裝VS 2017之前版本比如VS 2013、VS2015、 VS vNext?
- coca 搭配 in vs on vs at | page1
- coca 搭配 in vs on vs at | page3
- spring vs yii2 vs LaravelSpringLaravel
- [譯]await VS return VS return awaitAI
- The SQL vs NoSQL Difference: MySQL vs MongoDBMySqlMongoDB
- HashSet vs. TreeSet vs. LinkedHashSet
- Redux vs Mobx系列(-):immutable vs mutableRedux
- JavaScript 的 4 種陣列遍歷方法: for VS forEach() VS for/in VS for/ofJavaScript陣列
- 通過Arrays.asList方法將陣列轉成集合後,能否修改集合個數?陣列
- Tomcat vs Jetty vs Undertow效能對比TomcatJetty
- ABAP vs Java, 蛙泳 vs 自由泳Java
- When to use var vs let vs const in JavaScriptJavaScript
- 微軟常用執行庫合集下載(vs2008(sp)/vs2010(sp)/vs2012/vs2013/vs2015/vs2017)包含32位/64位微軟
- 測試速度比較:Selenium vs Playwright vs Cypress vs Puppeteer vs TestCafe
- javascript — == vs ===JavaScript
- vs 2017
- PostgreSQL DBA(131) - Develop(numeric vs float vs int)SQLdev
- PostgreSQL DBA(6) - SeqScan vs IndexScan vs Bit...SQLIndex
- 我將從VS Code切換到VS Codium
- PostgreSQL DBA(121) - pgAdmin(HA:PAF vs repmgr vs Patroni)SQL
- 如何實現 “defer”:Go vs Java vs C/CPPGoJava
- 資料湖 vs 倉庫 vs 資料庫資料庫
- Go vs Java vs C# 語法對比GoJavaC#