
1、扩容要看添加方法,从属性中可以看出有一个DEFAULT_CAPACITY属性值10。
1 2 3 4 5 6 7 | public boolean add(E e) {
ensureCapacityInternal(size + 1);
elementData[size++] = e;
return true ;
}
|
2、刚刚进入ensureCapacityInternal(size+1)size是一个完整的变量。
标记了ArrayList的大小(包含的元素数),而此时没有元素的是ensureCapacityInternal(0+1)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | private void ensureCapacityInternal(int minCapacity) {
ensureExplicitCapacity(calculateCapacity(elementData, minCapacity));
}
private static int calculateCapacity(Object[] elementData, int minCapacity) {
if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
return Math.max(DEFAULT_CAPACITY, minCapacity);
}
return minCapacity;
}
private void ensureExplicitCapacity(int minCapacity) {
modCount++;
if (minCapacity - elementData.length > 0)
grow(minCapacity);
}
|
以上就是java中ArrayList集合的扩容机制,希望对大家有所帮助。更多Java学习指路:Java基础
本教程操作环境:windows7系统、java10版,DELL G3电脑。