vector 是一个弃用的类,里面几乎所有的方法都用synchronized,说明他是一个线程同步的类,访问速度必然变慢,低层的数据结构是一个动态数组
基本用法:用法类似于数组
@Test
public void vectorTest() {
//用空参构造器创建的vector对象,容量默认大小是10
Vector
构造方法:
查看源码可以发现,创建一个Vector对象可以有四种方法
1、 空参构造方法初始化时的容量大小默认是10
2、publlic Vector(int initialCapacity); 这个构造方法指定一个初始化容量大小
@Test
public void vectorTest1() {
//使用public Vector(int initialCapacity)构造器构建Vector对象
Vector objects = new Vector(20);
//打印objects容量大小
System.out.println(objects.capacity());//控制台输出 20
}
3、public Vector(int initialCapacity, int capacityIncrement); 该构造方法不仅指定容量初始化大小而且还指定该容器的自增大小
@Test
public void vectorTest2() {
//1、用public Vector(int initialCapacity, int capacityIncrement)构造器 构建Vector对象
Vector objects = new Vector(20,1);
for (int i = 0; i < 21; i++) {
objects.add(i + 1);
if (i==19) {
//当i等于19时,打印出容器的容量大小
System.out.println(objects.capacity());//控制台输出 20
}
}
//打印objects容量大小
System.out.println(objects.capacity());//控制台输出 21 表明自增的大小是我们指定的capacityIncrement
}
4、public Vector(Conllection c); 这个方法传递一个Collection集合进行构建vector对象
@Test
public void vectorTest3() {
// 构建一个Collection对象
Collection objects = new ArrayList();
for (int i = 0; i < 10; i++) {
//储存数据
objects.add(i + 1);
}
//使用迭代器 进行遍历
Iterator iterator = objects.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next()+" ");//经过遍历输出的结果:1 2 3 4 5 6 7 8 9 10
}
System.out.println();
//使用public Vector(Collection extends E> c) 构建一个vector 对象
Vector objects1 = new Vector(objects);
for (int i = 0; i < 10; i++) {
System.out.print(objects1.get(i)+" ");//经过遍历输出的结果:1 2 3 4 5 6 7 8 9 10
}
}
方法源码:
| boolean | add(E e) 将指定元素添加到此向量的末尾。 |
| void | add(int index, E element) 在此向量的指定位置插入指定的元素。 |
| boolean | addAll(Collection extends E> c) 将指定 Collection 中的所有元素添加到此向量的末尾,按照指定 collection 的迭代器所返回的顺序添加这些元素。 |
| boolean | addAll(int index, Collection extends E> c) 在指定位置将指定 Collection 中的所有元素插入到此向量中。 |
| void | addElement(E obj) |
add调用了private void add()查看且传入了被添加的元素e,还有elementData数组,int 型的elementCount
protected Object[] elementData;//查看源码可以知道(The capacity of the vector is the length of this array buffer)这个数组的长度是vector容器的容量
protected int elementCount;//储存元素的有效个数
源码跟进查看private void add()
源码跟进查看grow()方法
源码跟进查看newCapacity()方法
跟进源码查看hugeCapacity()方法
总结:Vector容器是一个基于数组的数据结构储存方式,每次扩容都是对对数组复制操作,且是线程同步的方式,对于要求性能高的应用,不应用此方法,且Vector现在已经弃用了。



