Vector源码解析

本文详细介绍了Vector类的源码,包括Vector的继承体系、属性、构造方法和常用方法。Vector是线程安全的可增长对象数组,具有同步特性。文章分析了其构造方法、addElement、elementAt、elements等方法的实现,并对比了JDK1.2前后的方法差异,强调了Vector在多线程环境下的使用特点。
摘要由CSDN通过智能技术生成

Vector源码解析

1. Vector概述及继承体系

Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。与新 collection 实现不同,Vector 是同步的。
看一下Vector的继承体系:

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

这里写图片描述
RandomAccess接口是在源码中的注释如下:

Marker interface used by List implementations to indicate that they
support fast (generally constant time) random access.

翻译下就是:这是一个标记性的接口,谁实现了这个接口就表明他具有快速随机访问的能力。

2. Vector属性

capacityIncrement:自动扩容的大小,即当数组满了之后,就添加capacityIncrement个空间装载元素,如果capacityIncrement<=0,则扩容时就扩容到目前Vector容量的两倍。

elementCount:记录数组中数据的个数。

elementData:数组,因为Vector底层也是数组存储的,所以用这个来存储数据。

protected int capacityIncrement;  //扩容大小
protected int elementCount;     //数组数据条数
protected Object[] elementData;     //数组

3. Vector构造方法

Vector构造方法有四个构造方法
3.1.Vector()
构造一个空向量,使其内部数据数组的大小为 10,其标准容量增量为零。

    public Vector() {
        this(10);//这里的this调用的是Vector(int initialCapacity) 方法
    }

3.2.Vector(Collection <\?extends E> c)
构造一个包含指定 collection 中的元素的向量,这些元素按其 collection 的迭代器返回元素的顺序排列。

   public Vector(Collection<? extends E> c) {
        elementData = c.toArray();
        elementCount = elementData.length;
        // c.toArray might (incorrectly) not return Object[] (see 6260652)
        //c.toArray可能(不正确)不返回Object [](参见6260652)
        if (elementData.getClass() != Object[].class)
            elementData = Arrays.copyOf(elementData, elementCount, Object[].class);
            //用Arrays.copyOf()方法转换类型。
    }

3.3.Vector(int initialCapacity)
使用指定的初始容量和等于零的容量增量构造一个空向量。

public Vector(int initialCapacity) {
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值