Vector 底层扩容 源码解读

以如下代码,对底层扩容代码解读

Vector vector = new Vector();
// Vector vector = new Vector(8);
for (int i = 0; i < 10; i++) {
    vector.add(i);
}
vector.add(10);

无参构造器 Vector vector = new Vector();
在这里插入图片描述
在这里插入图片描述
执行Vector vector = new Vector()后,将会执行无参构造函数Vector(),无参构造函数中将会调用有参构造函数Vector(10),故会创建一个容量为10的Vector集合。

当程序运行到vector.add(10)时,此时Vector容器已满,将会继续扩容
在这里插入图片描述
(1) modCount++ 记录被修改的次数 (2) 执行ensureCapacityHrlper
在这里插入图片描述
(1)判断容量大小是否充足 (2)如果容量不足,调用grow()
在这里插入图片描述
扩容机制:newCapacity = oldCapacity + ((capacityIncrement > 0) ? capacityIncrement : oldCapacity); 此时capacityIncrement为0,oldCapacity为10,故 newCapacity为20,所以,最后容量扩为20.

有参构造器 Vector vector = new Vector(8);
在这里插入图片描述
执行Vector vector = new Vextor(8)时,会直接执行有参构造函数vector(8), 后续扩容与无参构造函数一样。

总结:Vector扩容机制,无参第一次扩容为10,有参构造第一次扩容为指定数量扩容。后续扩容为之前容量的两倍

当执行Vector vector = new Vector(2.3),会调用如下的构造方法
在这里插入图片描述
此时capacityIncrement为3
当再次扩容时 newCapacity = oldCapacity + capacityIncrement
在这里插入图片描述
故,Vector集合扩容会按照自己所定义的大小扩容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值