Java 为什么';ArrayList的ensureCapacity()方法是否会增加列表的大小?
当我执行下面的代码时,我得到的输出是Java 为什么';ArrayList的ensureCapacity()方法是否会增加列表的大小?,java,arraylist,size,Java,Arraylist,Size,当我执行下面的代码时,我得到的输出是1。为什么会发生这种情况 import java.util.*; class Output { public static void main(String args[]) { ArrayList obj = new ArrayList(); obj.add("A"); obj.ensureCapacity(3); System.out.println(obj.size()); } } 指实际在列表中的元素数,而不是
1
。为什么会发生这种情况
import java.util.*;
class Output {
public static void main(String args[]) {
ArrayList obj = new ArrayList();
obj.add("A");
obj.ensureCapacity(3);
System.out.println(obj.size());
}
}
指实际在列表中的元素数,而不是支持数组的大小
public int size()
返回此列表中的元素数
实现ArrayList
背后的想法是,您不应该关心大小到底有多大,而应该只关心大小是否足够大(由控制),而不是太大(由控制)。但大多数情况下,您不需要知道或关心支持数组的大小。指的是实际在列表中的元素数量,而不是支持数组的大小
public int size()
返回此列表中的元素数
实现ArrayList
背后的想法是,您不应该关心大小到底有多大,而应该只关心大小是否足够大(由控制),而不是太大(由控制)。但大多数时候,您不需要知道或关心支持数组的大小。size()
告诉您数组列表中的元素数。另一方面,通过ensureCapacity(n)
告诉arraylist您将至少拥有n
元素
Arraylist是动态增长的,比如说它的初始容量是x
,一旦这个容量即将超过,它就会创建一个大小为2x
的新数组。如果这也即将结束,则4x
。当数组大小加倍时,会产生开销,您必须复制所有元素
但是在开始时,如果您知道您将拥有至少10x
元素,那么您可以要求arraylist通过使用ensureCapacity(10x)
确保至少10x
容量,这样您就可以避免所有开销。size()
告诉您arraylist中的元素数量。另一方面,通过ensureCapacity(n)
告诉arraylist您将至少拥有n
元素
Arraylist是动态增长的,比如说它的初始容量是x
,一旦这个容量即将超过,它就会创建一个大小为2x
的新数组。如果这也即将结束,则4x
。当数组大小加倍时,会产生开销,您必须复制所有元素
但是在开始阶段,如果您知道您将拥有至少10个10x
元素,那么您可以要求arraylist通过使用ensureCapacity(10x)
确保至少10x
容量,这样您就可以避免所有开销