首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java Arrays.ArrayList vs ArrayList 區別:Arrays.asList 返回固定長度列表的坑與應對

     編輯:程式設計綜合問答

核心區別

特性java.util.ArrayListArrays.ArrayList (內部類)
來源集合框架標準實現Arrays.asList() 返回的內部類
長度可變支持 add/remove固定長度,不支持結構修改
底層數據動態擴容數組直接引用傳入的原數組
序列化支持支持

典型踩坑場景

List list = Arrays.asList("a", "b", "c");
list.add("d");  // 運行時拋出 UnsupportedOperationException
list.remove(0); // 同上
list.set(0, "x"); // 允許:修改元素值

正確轉換姿勢

// 需要可變列表時
List mutableList = new ArrayList<>(Arrays.asList("a", "b", "c"));
mutableList.add("d"); // 正常

// Java 9+ 便捷工廠方法
List list = List.of("a", "b", "c"); // 不可變
List mutable = new ArrayList<>(List.of("a", "b", "c"));

查看源碼方法

  1. IDE 中 Ctrl+Click (Windows) / Cmd+Click (Mac) 點擊 Arrays.asList
  2. 2. 查看 Arrays.java 內部類 ArrayList 定義(約 30 行代碼) 3. 對比 java.util.ArrayList 完整實現

Arrays.asList 返回的是「數組的列表視圖」,而非獨立集合。牢記「結構不可變」,需要增刪必須 new ArrayList() 包裹。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved