Vector 重点
- 无参构造情况下,默认大小10,存满后,按当前容量的2倍扩容;
- 指定大小的情况下,如需扩容,则直接扩容为上一次elementData容量的2倍;
- 指定大小和扩容增量(capacityIncrement)时,每次按指定的扩容增量扩容;
主要代码
Vector的add()方法被synchronized修饰
public synchronized boolean add(E e) {
...
}
//在扩容时用来判断的容量增量,默认为0,用于指定扩容增量时使用
protected int capacityIncrement;
private void grow(int minCapacity) {
//将原先的数组长度赋给oldCapacity
int oldCapacity = elementData.length;
//主要内容
int newCapacity = oldCapacity + ((capacityIncrement > 0) ?capacityIncrement : oldCapacity);
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
//创建一个类型相同,长度为newLength的数组,并将其返回,实现扩容
elementData = Arrays.copyOf(elementData, newCapacity);
}