点开Vector的源码 可以看到 这个类继承自AbstractList 实现了List<E>, RandomAccess, Cloneable, java.io.Serializable三个接口,是不是感觉和ArrayList很像
注意到 Vector主要的三个变量
elementData是一个Object的数组
elementCount是这个数组的下标变量,后面会用到。
capacityIncrement 这个值 则是这个数组的扩容值
同样的 我们从方法入手 实例化方法:
这个实例化方法同arrayList的实例化方法一样,实例化一个初始长度为10的Object数组
add方法
1.可以看到 这个add 是同步的 synchronized 这点不同于ArrayList的add方法所以说 这个是线程安全的
2.而扩容方法采取以下规则:如果capacityIncrement>0 则在以前的基础上 扩容capacityIncrement的长度
否则 将原来的长度扩容一倍
3.然后将原来的数据 拷贝至新数组里面
可以看出 需要自定义Vector的每次扩容值 只需要通过
两个带参数的构造器实例化赋值即可。
同样的Vector的remove方法 也是synchronized修饰 是线程安全的
所以 Vector相比于ArrayList是一个线程安全的数组结构。