arraylist通过动态扩容机制(默认初始容量10,扩容为1.5倍)自动管理数组大小,封装增删改查操作并提供泛型类型安全,支持便捷转数组。

ArrayList 能自动扩容,不用预先指定长度,直接按需添加元素,彻底避开传统数组长度不可变的限制。
动态扩容机制让容量随数据增长
ArrayList 内部用 Object[] 数组存储元素,但封装了扩容逻辑。当 add() 时发现容量不足,会自动创建一个更大的新数组(通常是原容量 1.5 倍),把旧数据复制过去。
- 初始容量默认为 10,也可在构造时指定:
new ArrayList(20) - 扩容不是每次加 1,而是成倍增长,减少频繁复制开销
- 无需手动管理数组大小,
add()、remove()都安全调用
增删改查操作更自然,不需手动移位或越界检查
传统数组插入中间位置要自己循环后移元素,删除要前移,还容易越界。ArrayList 把这些细节隐藏了:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
-
list.add(index, element)自动腾出位置并移动后续元素 -
list.remove(index)自动收缩,后续元素前移 -
list.set(index, element)支持随机修改,越界会抛IndexOutOfBoundsException(比静默错误更安全) - 获取元素仍用
list.get(index),语义和数组a[i]一致
类型安全 + 泛型支持,避免强制转换
声明时指定类型,编译期就约束元素类型,运行时不用 cast:
ArrayList<string> names = new ArrayList();</string>-
names.add("Alice");—— 只能加 String -
String s = names.get(0);—— 直接赋值,无警告 - 传统数组
String[]虽有类型,但泛型数组受限(不能new ArrayList<string>[10]</string>),ArrayList 更灵活
转成数组也简单,兼顾兼容性
如果某些 API 还要求传统数组,用 toArray() 快速转换:
-
String[] arr = list.toArray(new String[0]);(推荐传空数组,类型推导准确) - 避免
list.toArray()返回 Object[] 导致强转麻烦 - 转换是副本操作,后续修改 list 不影响原数组
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










