Vector源码分析

Vector是java容器中很重要很基础的一部分,在面试中,容器相关的底层问题简直不要太多,那么对于其底层的东西,还是需要结合源码(此处版本:jdk8)进行分析。

一 :数据结构

Vector底层数据结构核心其实是一个可以自动扩容的Object数组,实际上跟ArrayList的没啥区别,Vector的基本操作都是基于这个Object数组进行操作而实现的。

二:内存模型/内存分配

这里我贴上一张我自己画的图,很简单
Vector内存模型

三 : 继承关系

从源码上看,它继承了AbstractList抽象父类,实现了List(规定了List的操作规范)、RandomAccess(可随机访问)、Cloneable(可拷贝)、Serializable(可序列化)几个接口;这可以从源码中看的到:(嗯,和ArrayList的没啥区别)这里关于RandomAccess和Serializable可以去看我之前的ArrayList那篇文章,里面有讲

public class Vector<E>
    extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, java.io.Serializable

四:Vector的核心成员变量

直接附上源码:

protected Object[] elementData;

protected int elementCount;

protected int capacityIncrement;

private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;

elementData:Vector的数组缓冲区,也就是数据结构那里讲到的、Vector底层的那个Object数组;、Vector的容量就是elementData的长度;

MAX_ARRAY_SIZE:elementData的最大值。

elementCount:这个是Vector真正包含的元素的个数,它和容量是两个概念;

capacityIncrement:这个是Vector进行扩容时所增加的容量数,如果进行构造的时候没有指定capacityIncrement的值,则在进行扩容时扩容为双倍容量。

五:构造函数

指定elementCount和capacityIncrement参数构造:
public Vector(int initialCapacity, int capacityIncrement) {
        super();
        if (initialCapacity < 0)
            throw new IllegalArgumentException("Illegal Capacity: "+
                                               initialC
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值