最近在看Java数据结构的书,书上给了一个Vector类的例子,例子中介绍了很多Vector类的方法,但是有些方法我看不明,代码如下:
Vector v2 = new Vector(3,4); //v2 = [], size = 0, capacity = 3
for (int j = 4, j <= 8; j++)
v2.addElement(new Integer(j)); //v2 = [4,5,6,7,8], size = 5, capacity = 7
v2.ensureCapacity(9); //v2 = [4,5,6,7,8], size = 5, capacity = 11
Vector v3 = new Vector(2); //v3 = [], size = 0, capacity = 2
v3.setSize(4); //v3 = [null,null,null,null],size = capacity = 4
v3.setElement(new Integer(9) , 1); //v3 = [null,9,null,null]
v3.setElement(new Integer(5) , 3); //v3 = [null,9,null,5]
v3.insertElementAt(v3.elementAt(3) , 1); //v3 = [null,5,9,null,5],size = 5,capacity = 8
v3.ensureCapacity(9); //v3 = [null,5,9,null,5],size = 5,capacity = 16
疑问一:v2.ensureCapacity(9); 执行这个语句后capacity为什么变成11了呢?
疑问二:v3.insertElementAt(v3.elementAt(3) , 1); 执行这个语句后capacity为什么变成8了?
v3.ensureCapacity(9); 这里capacity为什么等于16?
高手们能不能帮我解释一下这里的capacity具体是如何改变的?
谢谢了! |