ArrayList.ensureCapacity()是否有性能优势?

Sam*_*til 4 java collections performance arraylist

如果我调用ArrayList.ensureCapacity()方法,是否有任何性能优势.在什么情况下建议使用该方法?

Ada*_*ski 6

如果您要将多个元素添加到列表中并知道要添加多少元素,则可以实现性能优势.通过调用ensureCapacity(int)您可以使基础数组一次调整大小,而不是多次调整大小.

但请注意,实际上你应该很少需要调用这个方法; 通常,您将使用ArrayList已知容量实例化,或者在列表大小未知的情况下,您应该考虑使用LinkedList替代.

还要注意,调整大小策略ArrayList通常以这样的方式实现,即阵列副本是罕见的操作(例如,每次阵列变满时容量可能增加50%).换句话说,即使您没有ensureCapacity提前致电,您也不会注意到代码中的任何减速.

  • 你可能的意思是"或者在**未知的列表大小的情况下".不过,我不认为这是使用LinkedList而不是ArrayList的充分理由.ArrayList几乎总是更快,除非列表很大并且您经常插入/删除列表的开头或迭代内部. (2认同)