private
void
ensureCapacityInternal(
int
minCapacity) {
if
(elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);
}
ensureExplicitCapacity(minCapacity);
}
private
void
ensureExplicitCapacity(
int
minCapacity) {
modCount++;
if
(minCapacity - elementData.length >
0
)
grow(minCapacity);
}
private
void
grow(
int
minCapacity) {
int
oldCapacity = elementData.length;
int
newCapacity = oldCapacity + (oldCapacity >>
1
);
if
(newCapacity - minCapacity <
0
)
newCapacity = minCapacity;
if
(newCapacity - MAX_ARRAY_SIZE >
0
)
[url]https:
2019
/
12
/
15
05
ArrayList 源码解析和设计思路 -慕课专栏
newCapacity = hugeCapacity(minCapacity);
elementData = Arrays.copyOf(elementData, newCapacity);
}