clear()方法最直接常用,将所有元素设为null、size置0,容量不变;需缩容用trimtosize()或新建实例;removeall(list)效率低且不安全。

用 clear() 方法最直接、最常用。
clear() 是标准做法
它会把所有元素设为 null,并将 size 置为 0,列表变为空状态,但底层数组(elementData)长度不变——也就是容量不缩。
- 调用后
list.size()返回 0,list.isEmpty()返回true - 原对象引用不变,所有指向它的变量都会看到空列表
- 性能高,无新对象分配,适合高频清空或共享列表场景
想重置容量(缩容到最小)怎么办
clear() 不缩容,要真正释放内存或恢复小容量,得额外操作:
-
list.clear(); list.trimToSize();:容量缩到当前 size(即 0),elementData变成长度为 0 的空数组 -
list = new ArrayList();:新建实例,容量回到默认值(JDK 17+ 是 12,老版本多为 10)
别用 removeAll(list) 代替 clear()
虽然 list.removeAll(list) 效果也是清空,但它需要构造临时集合、遍历比对,效率低于 clear(),还可能触发意外行为(如自定义 equals() 干扰)。
-
clear()是专为清空设计的 O(1) 操作(逻辑上),底层只重置指针和计数 -
removeAll()是通用批量删除方法,时间复杂度至少 O(n),不推荐用于单纯清空
Python 对比参考(避免混淆)
Python 的 my_list.clear() 和 Java 的 clear() 行为一致:原地清空、对象地址不变;而 my_list = [] 是新建对象,类似 Java 中 list = new ArrayList(),不是清空。











