Vector的介绍
/**
* Vector is a variable size contiguous indexable array of Objects. The size of
* the Vector is the number of Objects it contains. The capacity of the Vector
* is the number of Objects it can hold.
* <p>
* Objects may be inserted at any position up to the size of the Vector,
* increasing the size of the Vector. Objects at any position in the Vector may
* be removed, shrinking the size of the Vector. Objects at any position in the
* Vector may be replaced, which does not affect the Vector size.
* <p>
* The capacity of a Vector may be specified when the Vector is created. If the
* capacity of the Vector is exceeded, the capacity is increased, doubling by
* default.
*
* @see java.lang.StringBuffer
*/
Vector 可实现自动增长的对象数组。
java.util.vector提供了向量类(vector)以实现类似动态数组的功能。在Java语言中没有指针的概念,但如果正确灵活地使用指针又确实可以大大提高程序的质量。比如在c,c++中所谓的“动态数组”一般都由指针来实现。为了弥补这个缺点,Java提供了丰富的类库来方便编程者使用,vector类便是其中之一。事实上,灵活使用数组也可以完成向量类的功能,但向量类中提供大量的方法大大方便了用户的使用。
创建了一个向量类的对象后,可以往其中随意插入不同类的对象,即不需顾及类型也不需预先选定向量的容量,并可以方便地进行查找。对于预先不知或者不愿预先定义数组大小,并且需要频繁地进行查找,插入,删除工作的情况。可以考虑使用向量类。
Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的:
- Vector 是同步访问的。
- Vector 包含了许多传统的方法,这些方法不属于集合框架。
Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。
构造函数
Vector 类支持 4 种构造方法。
第一种构造方法创建一个默认的向量,默认大小为 10:
private static final int DEFAULT_SIZE = 10;
/**
* Constructs a new Vector using the default capacity.
*/
public Vector() {
this(DEFAULT_SIZE, 0);
}
第二种构造方法创建指定大小的向量。
/**
* Constructs a new Vector using the specified capacity.
*
* @param capacity
* the initial capacity of the new vector
*/
public Vector(int capacity) {
this(capacity, 0);
}
第三种构造方法创建指定大小的向量,并且增量用 capacityIncrement 指定。增量表示向量每次增加的元素数目。
/**
* Constructs a new Vector using the specified capacity and capacity
* increment.
*
* @param capacity
* the initial capacity of the new Vector
* @param capacityIncrement
* the amount to increase the capacity when this Vector is full
*/
public Vector(int capacity, int capacityIncrement) {
elementCount = 0;
try {
elementData = newElementArray(capacity);
} catch (NegativeArraySizeException e) {
throw new IllegalArgumentException()