Java中的clear()方法

fly*_*ina 5 java collections

Java中的许多容器类型数据结构都带有一个clear()方法.例如,我们可以调用clear()一个Vector我们要清除的所有内容Vector.我的问题是在应用该clear()方法后,向量中的内容是否被删除或者它们仍被引用?谢谢.

Mar*_*ell 9

它们不再被Collection引用,但如果您的代码中有任何引用,则该引用仍然存在.

如上所述,Vector的来源确实调用:

// Let gc do its work
for (int i = 0; i < elementCount; i++)
    elementData[i] = null;
Run Code Online (Sandbox Code Playgroud)

但是,这是将其内部引用设置为null(按值传递),并且不会影响任何外部引用.


Bal*_*usC 8

他们没有被淘汰 - 这没有任何意义,只有参考变为空,而不是价值 - ,他们只是被解除引用.如果他们没有任何其他参考(例如,另一个类将其作为静态或实例变量引用),那么他们将有资格获得GC.


Fab*_*eeg 5

如果没有从别处引用,它们将被垃圾收集.