Vector简介
以下源码都是jdk1.7.8.0
- Vector 是古老的实现类,继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口。
- Vector 是一个古老的集合,JDK1.0就有了。大多数操作与ArrayList相同,区别之处在于Vector是线程安全的。 在各种list中,最好把ArrayList作为缺省选择。当插入、删除频繁时,使用LinkedList;Vector总是比ArrayList慢,所以尽量避免使用。
- 和ArrayList不同,Vector中的操作是线程安全的
1,成员变量
protected Object[] elementData;
protected int elementCount;
protected int capacityIncrement;
private static final long serialVersionUID = -2767605614048989439L;
Vector底层也是数组实现的
2,构造方法
// initialcapacity是Vector的默认容量大小,capacityIncrement是每次Vector容量增加时的增量值
public Vector(int initialCapacity, int capacityIncrement) {
super();
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
this.elementData = new Object[initialCapacity];
this.capacityIncrement = capacityIncrement;
}
// initialcapacity是Vector的默认容量大小。当由于增加数据导致容量增加时,每次容量会增加一倍
public Vector(int initialCapacity) {
this(initialCapacity, 0);
}
// 默认构造函数
public Vector() {
this(10);
}
// 创建一个包含collection的Vector
public Vector(Collection<? extends E> c) {
elementData = c.toArray();
elementCount = elementData.length;
// c.toArray might (incorrectly) not return Object[] (see 6260652)
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, elementCount, Object[].class);
}
初始化容量也是10
新增方法:
void addElement(Object obj)
void insertElementAt(Object obj,int index)
void setElementAt(Object obj,int index)
void removeElement(Object obj)
void removeAllElements()
所有的方法都是线程安全的