最常用、最推荐的方式是调用 clear() 方法,它高效、语义明确,移除所有元素但保留底层数组以便复用,时间复杂度 o(n),调用后 size 为 0、isempty 为 true。

Java 中清空 ArrayList 的所有数据,最常用、最推荐的方式是调用 clear() 方法。
使用 clear() 方法(推荐)
这是标准、高效且语义明确的做法。它会移除列表中所有元素,但不改变 ArrayList 对象本身,也不释放底层数组内存(内部数组仍保留,后续添加元素时可复用)。
- 时间复杂度为 O(n),因为需要遍历并置空每个引用(对对象类型)
- 调用后
list.size()返回 0,list.isEmpty()返回 true - 示例:list.clear();
重新 new 一个新 ArrayList(不推荐常规使用)
虽然 list = new ArrayList(); 看似“清空”,但它只是让原变量指向新对象,原 ArrayList 实例若还有其他引用,不会被清空;且有额外对象创建开销。
- 适用于确定无其他引用、且希望彻底丢弃旧对象的场景
- 一般仅在需要重置容量或避免旧数据残留引用时考虑
注意:removeAll() 和赋值 null 的误区
list.removeAll(list); 虽然也能清空,但效率低(需查找匹配)、可读性差,没必要用;直接把 list 设为 null 只是断开引用,并未清空原列表内容,还可能导致 NullPointerException。
- 避免用
removeAll清空自身——逻辑绕、性能差 - 不要用
list = null代替清空操作
小提示:清空后容量不变
调用 clear() 后,list.size() 是 0,但 list.capacity()(虽无直接方法,实际底层数组长度未变)仍保持之前大小。如需真正缩小内存占用,可后续调用 list.trimToSize();(可选)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











