Java中ArrayList初始化推荐显式泛型+菱形运算符,如ArrayList<String> list = new ArrayList<>();支持指定初始容量和集合初始化;添加元素主要用add()末尾追加、add(index, e)指定位置插入、addAll()批量添加;需注意泛型声明、扩容性能及Arrays.asList返回列表不可修改。

Java 中 ArrayList 初始化和添加元素很简单,关键在于选对构造方式、注意泛型声明、避免空指针或类型错误。
初始化 ArrayList 的常见方式
推荐显式指定泛型类型,避免运行时类型问题:
- 空集合初始化(最常用):ArrayList<String> list = new ArrayList<>(); —— Java 7+ 支持菱形运算符,自动推断类型
- 指定初始容量(适合预估大小的场景):ArrayList<Integer> list = new ArrayList<>(16); —— 减少扩容次数,提升性能
-
用已有集合初始化:ArrayList<String> list = new ArrayList<>(Arrays.asList("a", "b", "c")); —— 注意
Arrays.asList()返回的是固定大小列表,需包装成 ArrayList 才能增删
添加元素的三种主要方法
所有添加操作都基于 add() 方法,但调用方式不同,用途也不同:
-
末尾追加(最常用):list.add("hello"); —— 添加到列表末尾,返回
true -
指定位置插入:list.add(2, "world"); —— 在索引 2 处插入,原位置及后续元素后移;若索引越界(size),抛出
IndexOutOfBoundsException -
批量添加:list.addAll(Arrays.asList("x", "y", "z")); —— 将另一个集合所有元素追加到末尾;也可用
addAll(index, collection)插入到指定位置
注意事项与常见坑
实际写代码时容易忽略这些细节:
立即学习“Java免费学习笔记(深入)”;
- 未声明泛型(如
new ArrayList())会导致编译警告,且失去编译期类型检查,不推荐 - 初始化容量设为 0 并不会报错,但首次添加就触发扩容(默认扩容为 10),频繁扩容影响性能
-
Arrays.asList(...)返回的不是真正的 ArrayList,它不支持add()和remove(),直接调用会抛UnsupportedOperationException - 向 ArrayList 添加
null是合法的(除非泛型是基本类型包装类且业务逻辑不允许),但遍历时需自行判空


















