vector capacity java_浅析Java中Vector类的capacity方法

在各种Java面试题中,想必大家是有见到过Vector这个类吧。一般都是说Vector是同步的这个点。

3aec2502d7e039ba9aa027071710d39c.png

不过今天我要说的不是这个,而是Vector类中的capacity方法。

先看看下面这段关于Vector类中的capacity方法的代码。

8043d77f974ca2307d072e5a03529894.png

这段代码中使用了Vector类的三个方法,add方法、size方法和capacity方法。add方法、size方法大家经常用就不多说了,那capacity方法是干什么的呢。

capacity单词的意思是容量、容积。这个方法的意思就是获取Vector类对象的容量。

拿上面代码的执行结果来解释一下吧。

254873c3b3dcdb43d17275c2bd6ca13f.png

我这里实例化是使用的默认的构造方法,大家可以看一下源码,默认的构造方法中,给这个对象设置的初始容量是10。那就是说这个Vector类对象(一个动态数组)初始化后可以放10个元素。

然后执行的结果就会输出size是0(因为一个元素都没有存入),而容量就是上面说的10。

这时候执行add方法存入一个元素,于是输出的size就是1了,容量不会改变,还是10。

那如果存入的元素操作10个呢,就需要自动扩容了。就是上面的第三组自行结果了,当存入的元素操作之前的容量时,容量扩容到了20。

那这个扩容的规则是什么呢。看一看源码便知了。

69dc5c3e74121b853c606fc76a612483.pngadd方法中调用了ensureCapacityHelper

8e62e2b8bcc3aa12d4c19b8c83c4a200.pngensureCapacityHelper调用了grow

c9aade92cd5d43f4ab1cc69ed4a2ed8c.pnggrow方法是扩容的实现

其中capacityIncrement是扩容增量,public Vector(int initialCapacity, int capacityIncrement)这个构造方法可以指定,默认扩容增量为0.

从grow方法中我们可以看到,如果增量不为0,则每次容量不足时按照增量去增加容量。如果增量为0,则每次容量不足时会将当前容量翻倍。

今天的关于Vector类中的capacity方法的内容就到这里了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值