扩容时机:当新插入一个元素,此时超过了最大容量时,就会扩容,在java8中扩容是1.5倍。和map不要搞混哦。可以debug跟踪一下。 代码,
private void ensureCapacityInternal(int minCapacity) {
ensureExplicitCapacity(calculateCapacity(elementData, minCapacity));
}
private void ensureExplicitCapacity(int minCapacity) {
modCount++;
// overflow-conscious code
if (minCapacity - elementData.length > 0)
grow(minCapacity);
}
public boolean add(E e) {
ensureCapacityInternal(size + 1); // Increments modCount!!
elementData[size++] = e;
return true;
}
本文详细解析了Java中ArrayList的扩容时机与机制,当新元素插入超过当前容量时,ArrayList将进行1.5倍的扩容。通过源码解读,帮助理解ArrayList如何确保容量足够并避免频繁扩容。
2638

被折叠的 条评论
为什么被折叠?



