http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/ArrayList.java#473 http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/ArrayList.java#473
public void clear() {
modCount++;
// Let gc do its work
for (int i = 0; i < size; i++)
elementData[i] = null;
size = 0;
}
我的问题是,为什么他们必须在后备数组 { O(n) } 中进行循环以使每个元素符合垃圾回收条件,而他们本来可以重新初始化后备数组,并丢弃对整个数组的引用{ O(1) } 并使其符合垃圾回收条件?
O(n) 性能clear()
对我来说似乎不太好,或者我错过了什么?
按照他们的方式进行操作,您可以重复使用阵列,而无需重新分配其后备存储。如果您想重新分配数组,您可以自己完成,因为ArrayList
主要由其后备存储组成。
如果他们将数组作为一个整体释放,那么调用之间的区别就很小了clear()
并重新分配ArrayList
本身。现在,您可以选择重新使用该阵列或用全新的阵列替换它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)