Vector
- Vector 实现动态数组,这与 ArrayList 相似,但两者不同的是,Vector是同步的,并且它包含了许多从以前版本遗留下来的不属于类集框架的方法,随着 Java 2 的发布,Vector 被重新设计来扩展 AbstractList 和实现 List 接口,因此现在它与类集是完全兼容的;
- java.util.Vector,详见:Class Vector;
1. 构造方法
- 所有的矢量都有一个原始容量,达到容量后再存储对象时,矢量会自动为那个对象分配空间,同时为别的对象增加额外的空间;
- 矢量减小了可能产生的分配次数,这种次数的减少是很重要的,因为分配内存是很花时间的;
- 在每次的再分配中,分配的额外空间的总数由在创建矢量时指定的增量来确定,如果没有指定增量,在每个分配周期,适量的大小增加一倍;
构造方法 | 说明 |
---|
Vector() | 创建一个原始大小为10的默认矢量 |
Vector(int size) | 创建一个原始容量由 size 指定的矢量 |
Vector(int size, int increase) | 创建一个原始容量由 size 指定,并且其增量由 increase 指定的矢量,增量指定了矢量每次允许向上改变大小的元素的个数 |
Vector(Collection c) | 创建一个包含了类集 c 中元素的矢量,这个构造方法在 Java 2 中被添加 |
2. 定义的保护数据成员
- 增量值被存储在 capacityIncrement 中,矢量中的当前元素的个数被储存在 elementCount 中,保存矢量的数组被存储在 elementData 中;
int capacityIncrement;
int elementCount;
Object elementData[];
3. 矢量的方法
- 除了由 List 定义的类集方法外, Vector 还包含几个从之前版本遗留下来的方法:
类型 | 方法 | 说明 |
---|
final void | addElement(Object o) | 将 o 指定的对象加入矢量 |
int | capacity() | 返回矢量的容量 |
Object | clone() | 返回调用矢量的一个副本 |
boolean | contains(Object o) | 如果 o 被包含在矢量中,返回 true |
void | copyInto(Object array[ ]) | 将包含在调用矢量中的元素复制到由 array 指定的数组中 |
Object | firstElement() | 返回矢量的第一个元素 |
Enumeration | elements() | 返回矢量中元素的一个枚举 |
Object | elementAt(int index) | 返回由 index 指定位置的元素 |
int | indexOf(Object o) | 返回 o 首次出现的位置索引,如果对象不在矢量中,返回 -1 |
int | indexOf(Object o, int start) | 返回 o 在矢量中从 start 位置起第一次出现的位置索引,如果对象不属于矢量的这一部分,返回-1 |
void | insertElementAt(Object o, int index) | 在矢量中,在 index 指定的位置处加入 o |
boolean | isEmpty() | 如果矢量是空的,返回 true |
Object | lastElement() | 返回矢量中的最后一个元素 |
int | lastIndexOf(Object o) | 返回 o 在矢量中最后一次出现的位置索引,如果对象不在矢量中,返回-1 |
int | lastIndexOf(Object o, int start) | 返回 o 在矢量中最后一次出现的位置索引,如果对象不包含在矢量中,返回-1 |
void | removeAllElements() | 清空矢量,在这个方法执行以后,矢量的大小为 0 |
boolean | removeAllElement(Object o) | 从矢量中删除 o,如果矢量中有多个实例,则其中第一个实例被删除,如果删除成功,返回 true |
void | removeElementAt(int index) | 删除由 index 指定位置处的元素 |
void | setElementAt(Object o, int index) | 将由 index 指定的位置分配给 o |
void | setSize(int size) | 将矢量中元素的个数设为 size,如果新的长度小于旧的长度,元素将丢失,如果新的长度大于旧的长度,则在其后增加 null 元素 |
int | size() | 返回矢量中当前元素的个数 |
String | toString() | 返回矢量的字符串等价形式 |
void | trimToSize() | 将矢量的容量设为与其当前拥有的元素的个数相等 |
4. 矢量的使用
- 矢量继承了枚举(Enumeration)接口,可以使用几种遗留下来的方法;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;
public class test {
public static void main(String[] args) {
Vector v = new Vector();
v.add("A");
v.add("B");
v.add("C");
Enumeration e = v.elements();
while (e.hasMoreElements()) {
System.out.print(e.nextElement() + "\t");
}
System.out.println();
Iterator it = v.iterator();
while (it.hasNext()) {
System.out.print(it.next() + "\t");
}
}
}
5. 矢量类的子类