Vector核心扩容机制和源码分析
Vector中维护了一个Object类型的数组elementData,add方法添加的属性存放在elementData数组中。Vector有一个无参构造器Vector( )和一个有参构造器Vector(int)。
一、分析使用无参构造器,创建和使用Vector的源码
1、构造无参构造器,给vector添加元素
import java.util.Vector;
public class VectorSource {
public static void main(String[] args) {
Vector vector = new Vector();//使用无参构造器创建Vector对象
for (int i = 0; i < 10; i++) {//使用for循环给vector集合添加1-10数据
vector.add(i);
}
vector.add(11);//给vector集合添加第11个数据,观察是否扩容及扩容机智
}
}
2、设置断点,debug扩容机理
3、结论
当创建Vector对象时,若使用的是无参构造器,则初始elementData容量为0,第一次添加,则扩容elementData容量为10,如需再次扩容,则扩容elementData容量为上一次容量的2倍。
#、分析使用有参构造器,创建和使用Vector的源码
1、构造有参构造器,给vector添加元素
import java.util.Vector;
public class VectorSource {
public static void main(String[] args) {
Vector vector = new Vector(15);//使用有参构造器创建Vector对象,初始容量自定义为15
for (int i = 0; i < 15; i++) {//使用for循环给vector集合添加1-15数据
vector.add(i);
}
vector.add(16);//给vector集合添加第16个数据,观察是否扩容及扩容机制
}
}
使用有参构造器创建Vector对象,初始容量自定义为15
2、设置断点,debug扩容机理
3、结论
当创建Vector对象时,若使用的是有参构造器,则初始elementData容量为(int)中指定大小,如需扩容,则直接扩容为上一次elementData容量的2倍。
三、总结
当创建Vector对象时,不管使用的是无参构造器还是有参构造器,扩容为上一次elementData容量的2倍。
|