使用 clear() 方法可以清空 arraylist 中的所有元素。调用该方法后,列表的大小将变为 0,且内部存储对象的引用会被置为 null 以辅助垃圾回收。

clear() 方法执行后的内存状态是怎样的
clear() 方法会遍历内部数组并将每个索引位置的元素设置为 null,同时重置计数器 size 为 0。这确保了之前的对象不再被该列表强引用,从而可以被垃圾收集器回收。

import java.util.ArrayList;
import java.util.List;
public class ClearListDemo {
public static void main(String[] args) {
List<string> list = new ArrayList();
list.add("A");
list.add("B");
// 清空操作
list.clear();
System.out.println("Size: " + list.size()); // 输出 0
System.out.println("Is Empty: " + list.isEmpty()); // 输出 true
}
}</string>
重新实例化与 clear() 的性能差异如何
虽然可以通过 new ArrayList() 创建新对象来替代旧列表,但 clear() 通常更高效,因为它复用了现有的底层数组容量,避免了重新分配内存的开销。如果旧列表非常大且不再需要保留容量,重新实例化可能更合适以释放内存。

import java.util.ArrayList;
import java.util.List;
public class CompareClearAndNew {
public static void main(String[] args) {
List<string> list = new ArrayList();
for (int i = 0; i ();
long end2 = System.nanoTime();
System.out.println("Clear time: " + (end1 - start1));
System.out.println("New instance time: " + (end2 - start2));
}
}</string>
清空后再次添加元素时的容量变化
在调用 clear() 后,如果继续向列表中添加元素,底层的数组容量不会自动缩小,而是保持之前的最大容量。这意味着如果之前列表增长到了很大容量,即使清空了,它仍然占用相应的内存空间,直到下次扩容或手动调整。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











