arraylist创建需分声明、实例化、初始化三阶段:无参构造默认容量10;指定initialcapacity可减少扩容开销;可从数组、set等集合初始化(浅拷贝);java 9+可用list.of()生成不可变列表再转为可变arraylist。

Java 中 ArrayList 的初始化与创建有多种方式,关键在于区分“声明”、“实例化”和“初始化数据”三个阶段,避免常见空指针或容量问题。
基础创建:new ArrayList()
最常用的方式是使用无参构造器创建一个空列表,底层数组默认初始容量为 10(JDK 14+ 仍沿用此设计):
- // 声明并实例化,泛型必须指定(推荐使用钻石运算符)
- List
list = new ArrayList(); - // 添加元素后自动扩容,无需预先指定大小
- list.add("Hello");
指定初始容量:new ArrayList(int initialCapacity)
如果预估要存入大量元素(如 5000 条记录),可传入初始容量,减少后续扩容带来的数组复制开销:
- // 创建初始容量为 1000 的 ArrayList
- ArrayList
numbers = new ArrayList(1000); - // 注意:initialCapacity 不能为负数,否则抛 IllegalArgumentException
从已有集合初始化:new ArrayList(Collection c)
快速将数组、Set 或其他 List 转为 ArrayList,内容被复制(浅拷贝):
- // 从数组转:需用 Arrays.asList() 包装
- String[] arr = {"a", "b", "c"};
- List
list = new ArrayList(Arrays.asList(arr)); - // 从 Set 转(顺序不保证,但 ArrayList 会按迭代顺序存储)
- Set
set = Set.of("x", "y"); - List
fromSet = new ArrayList(set);
不可变初始化(Java 9+):List.of() + new ArrayList()
若想用简洁语法创建带初始值的 ArrayList,可借助 List.of()(返回不可变列表),再传给 ArrayList 构造器:
- // 一行完成:含 3 个字符串的可修改 ArrayList
- ArrayList
list = new ArrayList(List.of("apple", "banana", "cherry")); - // 注意:List.of() 本身不可修改,但新 ArrayList 是完全独立且可增删的
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











