Vector类与ArrayList类有许多地方都相似,我这里只介绍与ArrayList不同的方面,其他详细见我ArrayList详解。
一、继承关系图
二、Vector类介绍
protected int capacityIncrement;
private void grow(int minCapacity) {
// overflow-conscious code
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);
elementData = Arrays.copyOf(elementData, newCapacity);
}
它比ArrayList多了一个capacityIncrement属性,当capacityIncrement小于等于0时,扩容为原来的2倍,而不是ArrayList的1.5倍,当capacityIncrement大于0时,每次扩容增加capacityIncrement大小。
其他地方除了加synchronized关键字修饰都一样。