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

时间:2011-10-31 10:51:42

标签: java performance collections arraylist

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

2 个答案:

答案 0 :(得分:6)

在您要将多个元素添加到列表中并知道要添加多少元素的情况下,可以实现性能优势。通过调用ensureCapacity(int),您可以使基础数组重新调整一次,而不是多次。

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

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

答案 1 :(得分:1)

应用程序可以在使用ensureCapacity操作添加大量元素之前增加ArrayList实例的容量。这可能会减少增量重新分配的数量 ArrayList.ensureCapacity()如果需要,增加此ArrayList实例的容量,以确保它至少可以容纳由minimum capacity参数指定的元素数。