ArrayList.clear()是否将数组调整为尽可能小的大小?

A A*_*A A 8 java arraylist

如果我理解ArrayLists,它们将由一个数组支持,该数组在完整时会自动调整大小.在调用clear()时,ArrayList是否调整为可能的最小数组大小?

Evg*_*eev 10

不,不是,这是一个需要牢记的问题.假设ArrayList的内部Object []增长到1000000个元素.现在你调用ArrayList.clear().这会将所有1000000个元素设置为null,将内部大小设置为0. Nulling 1000000是一个耗时的操作,而ArrayList仍然会在堆上占用1000000 x 4个字节的Object [].您可以在clear()之后调用ArrayList.trimToSize()但是有一个catch - 您首先清除了1000000个元素然后将它们扔掉.在这种情况下,更好的解决方案是重新创建ArrayList - new ArrayList().