java ArrayList 扩容机制代码验证
时间: 2024-10-13 10:03:24 浏览: 31
Java核心技术结合源码验证
`ArrayList` 的扩容机制是在其内部维护一个动态大小的数组,每当集合元素达到当前数组容量的极限时,它会自动扩大数组的容量,并将现有的所有元素复制到新数组中。这个过程由 `ArrayList` 类的 `ensureCapacity` 方法管理。
以下是 `ArrayList` 扩容机制的主要部分,虽然这不是源代码,但是描述了关键步骤:
```java
// 假设 ArrayList 的私有变量是 capacity 和 size
void ensureCapacity(int minCapacity) {
if (minCapacity > size) {
// 如果需要的最小容量大于当前大小,扩容
int oldCapacity = capacity;
while (oldCapacity < minCapacity) {
oldCapacity <<= 1; // 将旧容量翻倍
}
// 创建新数组,大小为翻倍后的容量
T[] newElementData = (T[]) new Object[oldCapacity];
// 将原有数据从旧数组复制到新数组
System.arraycopy(elementData, 0, newElementData, 0, size);
elementData = newElementData; // 更新内部引用
capacity = oldCapacity; // 更新容量
}
}
```
当你尝试添加元素导致数组满时,`add(E e)` 方法会调用 `ensureCapacity(size + 1)` 来处理扩容。
阅读全文