Vector 介绍
Vector实现了一种可增长的数组对象。它可以像数组一样,使用index访问元素。 Vector的大小可以根据需要增加或缩小,以适应Vector创建后添加和删除项目的需要。Vector 通过维护 capacity 和 capacityIncrement 来优化存储管理。capacity 的值大于等于Vector的size. Vector 创建后,Vector的存储量将以块( capacityIncrement那么多)的形式增加。
Vector 和 ArrayList的相同点
看代码:
public class Vector<E>
extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{
//省略
}
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{
//省略
}
看到没有,他们继承了同一个父类ArrayList,实现了同样的接口 List, RandomAccess, Cloneable, java.io.Serializable。
那奇怪了,岂不是多余吗?不是的。往下看:
Vector 和 ArrayList的不同点
第一个不同点,就是他们扩容的方式。ArrayList扩容比较大气,根据当前的容量来。也就是:newCapacity = oldCapacity + (oldCapacity >> 1);
ArrayList的扩容方式:
private void grow(int minCapacity) {
// overflow-conscious code
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + (oldCapacity >> 1);
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
if (newCapacity - MAX_ARRAY_SIZE > 0