ArrayList constructor的JDK doc表示初始容量为10.
解决方法
仅适用于JDK,最多6个
这不是错误.
用于存储列表元素的内部数组的初始容量真的是10.
这并不意味着列表的大小是10.只有一个大小为10的空数组才被创建.
当一个对象被添加到列表中时,一个到最后一个元素的内部指针移动到一个.如果数组的容量不够,则会创建一个更高容量的另一个数组,并将旧数组复制到新数组的第一部分.在这一刻,阵列的容量不会超过10.
代码是:
public ArrayList() { this(10); // Here the 10 of the default capacity } public ArrayList(int initialCapacity) { super(); if (initialCapacity < 0) throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); this.elementData = new Object[initialCapacity]; }
对于较新的JDK(来自java 1.7)
注意:在更新的ArrayList(我认为从Java7)的源代码已经改变了.文件仍然是旧的.所以是的,这是文档上的错误!
这里是新版本的构造函数
private static final Object[] EMPTY_ELEMENTDATA = {}; .... public ArrayList() { super(); this.elementData = EMPTY_ELEMENTDATA; // This is 0 capacity!!!! }
注意:我向Oracle打开了一个新的错误,以查看文档.