1.Vector
Vector和ArrayList很相似,其内部都是通过一个容量能动态增长的数组来实现的。不同点是Vector是线程安全的。因为其内部有很多同步代码块来保证线程安全。
Vector的大小是可以增加或者减小的,以便适应创建Vector后进行添加或者删除操作。
Vector有几个重要属性:
protected Object[ ] elementData; //底层数组
protected int elementCount; //数组有效元素个数
capacityIncrement //扩容时的增长系数
2.构造方法
Vector的构造方法一共有四个。
①创建一个空的Vector,并且指定了Vector的初始容量为10。
public Vector(){
this(10);
}
②创建一个空的Vector,并且指定了Vector的初始容量。
public Vector(int initalCapacity){
this(initalCapacity,0)
}
③创建一个空的Vector,并且指定了Vector的初始容量和扩容时的增长系数。
public Vector(int initalCapacity, int capacityIncrement){
super();
if(initalCapacity < 0)
throw new IllegalArgumentException("illegal capacity:" + initalCapacity);
this.elementData = new Object[initalCapacity];
this.capacityIncrement = capacityIncrement;
}
④根据其他集合来创建一个非空的Vector。
public Vector(Collection<? extends E> c) {
elementData = c.toArray();
elementCount = elementData.length;
if(elementData.getClass() != Object[ ].class)
elementData = Arrays.copyOf(elementData, elementCount, Object[ ].class);
}
首先把其他集合转化为数组,然后复制粘贴到Vector里面。
3.增加元素
增加元素有两个主要的方法,第一个是在Vector尾部追加,第二个是在指定位置插入元素。
①在Vector尾部追加元素
public synchronized boolean add(E e) {
modCount++;
ensureCapacityHelper(elementCount + 1);//判断容量大小,若能装下就直