如果我调用ArrayList.ensureCapacity()方法,是否有任何性能优势。在什么情况下建议使用该方法?
答案 0 :(得分:6)
在您要将多个元素添加到列表中并知道要添加多少元素的情况下,可以实现性能优势。通过调用ensureCapacity(int)
,您可以使基础数组重新调整一次,而不是多次。
但是请注意,实际上你很少需要调用这个方法;通常,您将使用已知容量实例化ArrayList
,或者在列表大小未知的情况下,您应该考虑使用LinkedList
代替。
另请注意,ArrayList
的调整大小策略通常以这样的方式实现:阵列副本是罕见的操作(例如,每次阵列变满时容量可能会增加50%)。换句话说,即使您未提前致电ensureCapacity
,您也不会发现代码中的任何速度减慢。
答案 1 :(得分:1)
应用程序可以在使用ensureCapacity操作添加大量元素之前增加ArrayList实例的容量。这可能会减少增量重新分配的数量
ArrayList.ensureCapacity()
如果需要,增加此ArrayList实例的容量,以确保它至少可以容纳由minimum capacity参数指定的元素数。