arraylist如何扩容
时间: 2024-05-10 22:17:43 浏览: 86
ArrayList 是基于数组实现的动态数组,因此需要在元素数量增加时动态扩容。当 ArrayList 容量不足以存储新元素时,系统会自动为其分配更大的内存空间,然后将原数组中的元素复制到新数组中。
具体扩容的实现方式如下:
1. 首先,判断当前 ArrayList 容量是否足够存储新元素,如果不够,就需要扩容。
2. 计算新的容量大小,一般是原来的容量大小加上一个增量。增量的大小可以自定义,也可以使用默认值。
3. 创建一个新数组,将原数组中的元素复制到新数组中。
4. 使 ArrayList 的数组引用指向新数组。
5. 最后,将新元素添加到 ArrayList 中。
以下是 ArrayList 扩容的示例代码:
```
public void add(E e) {
// 判断容量是否足够,如果不够,就需要扩容
if (size == elementData.length) {
// 计算新的容量大小
int newCapacity = elementData.length + (elementData.length >> 1); // 新容量为原来的1.5倍
// 创建一个新数组,将原数组中的元素复制到新数组中
elementData = Arrays.copyOf(elementData, newCapacity);
}
// 添加新元素到 ArrayList 中
elementData[size++] = e;
}
```
需要注意的是,ArrayList 扩容的过程是相对耗时的,因此在实际使用中,应该尽可能减少扩容的次数,可以通过在创建 ArrayList 时指定初始容量来避免多次扩容。
阅读全文