作者:专情与你2602899315 | 来源:互联网 | 2022-11-25 12:17
请注意,这与为什么启动具有初始容量的ArrayList 不重复?
查看java.util.ArrayList
类的源代码,从至少java 1.8开始,我看到以下代码:
/**
* Constructs an empty list with an initial capacity of ten.
*/
public ArrayList() {
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}
哪里
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
虽然javadoc正式声明:
构造一个初始容量为10的空列表.
我概述:......初始容量为10.这十个在哪里?
我是否完全疯了,错过了什么,或者这里只有一个javadoc错误?
UPD:它看起来像以前的Java 1.8:
public ArrayList(int initialCapacity) {
super();
if (initialCapacity <0)
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
this.elementData = new Object[initialCapacity];
}
/**
* Constructs an empty list with an initial capacity of ten.
*/
public ArrayList() {
this(10);
}
Eran..
7
这是一个优化.开发人员决定ArrayList
使用空的后备数组初始化,并且只有在开始向元素添加元素时才懒惰地创建非空的后备数组List
.
当你添加第一个元素(通过调用add
)时,它会调用
ensureCapacityInternal(size + 1);
检查是否elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA
,如果是,则设置容量
minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);
DEFAULT_CAPACITY
是10
.
1> Eran..:
这是一个优化.开发人员决定ArrayList
使用空的后备数组初始化,并且只有在开始向元素添加元素时才懒惰地创建非空的后备数组List
.
当你添加第一个元素(通过调用add
)时,它会调用
ensureCapacityInternal(size + 1);
检查是否elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA
,如果是,则设置容量
minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);
DEFAULT_CAPACITY
是10
.