arraylist 的实际大小由 size() 方法返回,它表示当前已存储元素的个数,而非底层数组容量;size() 是 o(1) 操作,准确反映逻辑元素数量,与初始化容量或预留空间无关。

Java 中 ArrayList 获取列表的实际大小,直接调用 size() 方法即可。它返回当前已存储元素的个数,不是底层数组的容量(capacity),也不是初始化时指定的初始容量。
为什么 size() 是“实际大小”?
size() 返回的是逻辑上当前有多少个有效元素,与是否预留了空位无关。例如:
// 创建初始容量为 10 的 ArrayList,但没加任何元素ArrayList<string> list = new ArrayList(10);</string>System.out.println(list.size()); // 输出:0
// 即使底层数组长度是 10,实际元素数仍是 0
size() 和 capacity 的区别
ArrayList 内部用数组实现,有「实际大小」和「容量」两个概念:
- size():公开方法,返回当前元素个数,始终准确反映列表内容
- capacity:内部数组的长度,没有公开 API;可通过反射或估算(如扩容后观察)获知,但不应依赖
常见误区:把 list.toArray().length 当作 size —— 这其实返回的是底层数组长度(即 capacity),可能远大于实际元素数,尤其在多次 add 后又 clear 的情况下。
使用注意事项
- size() 是 O(1) 操作,效率高,可放心频繁调用
- 判断是否为空,推荐用
isEmpty(),语义更清晰(等价于size() == 0) - 遍历时用
for (int i = 0; i 安全;若循环中会修改列表,需改用迭代器避免 ConcurrentModificationException
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











