Vector源码解析
老样子,话不多说先上一张UML类图
![d473d09b12f9318168f6918360d8bbc8.png](https://img-blog.csdnimg.cn/img_convert/d473d09b12f9318168f6918360d8bbc8.png)
![d27d88ce47c48976856bb81d937b41f3.png](https://img-blog.csdnimg.cn/img_convert/d27d88ce47c48976856bb81d937b41f3.png)
- Vector的初始化构造方法
无参构造(默认调用初始化容量的构造方法,默认容量为10)
public Vector() {//这里会调用Vector带容量参数的构造方法默认容量为10//这里和ArrayList不同的是ArrayList在调用add方法才初始化容量 this(10);}
指定初始化容量大小
public Vector(int initialCapacity) {//这里调用下面指定初始化容量和增长系数的构造方法,默认增长系数为0 this(initialCapacity, 0);}
指定初始化容量和增长系数
public Vector(int initialCapacity, int capacityIncrement) { super(); //容量不能小于0 if (initialCapacity < 0) throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); //为对象数组指定初始化容量 this.elementData = new Object[initialCapacity]; //设置增长系数 this.capacityIncrement = capacityIncrement;}
使用另外一个集合构造该集合
public Vector(Collection extends E> c) {//将传入集合转成数组 elementData = c.toArray(); //Vector的元素个数就是集合的长度 elementCount = elementData.length; // c.toArray might (incorrectly) not return Object[] (see 6260