3-Vector底层结构和源码分析

打印 上一主题 下一主题

主题 913|帖子 913|积分 2739

3-Vector底层结构和源码分析

介绍汇总:

  • Vector的根本介绍
  • Vector的运行重要步骤
  • 底层结构和 ArrayList 的比较
1-Vector的根本介绍


  • 定义阐明


  • Vector 底层也是一个对象数组,protected Object[] elementData ;
  • Vector 是线程同步的,即线程安全,Vector 类的操纵方法带有 synchronized 。
  1. public synchronized E set(int index, E element) {
  2.         if (index >= elementCount)
  3.             throw new ArrayIndexOutOfBoundsException(index);
  4.         E oldValue = elementData(index);
  5.         elementData[index] = element;
  6.         return oldValue;
  7. }
复制代码

  • 在开辟中,需要线程同步安满是,考虑使用 Vector 。
2-Vector的运行重要步骤


  • Vector 构造器(三种)
    无参构造器
    1. public Vector() {
    2.         this(10);
    3. }
    4. // 此无参构造器会调用一参构造器,并且初始容量大小为 10 ,容量增量大小为 0
    复制代码
    一参构造器
    1. public Vector(int initialCapacity) {
    2.         this(initialCapacity, 0);
    3. }
    4. // 此一参构造器会调用两参构造器,并且初始容量为指定大小,容量增量大小为 0
    复制代码
    两参构造器
    1. public Vector(int initialCapacity, int capacityIncrement) {
    2.         super();
    3.         if (initialCapacity < 0)
    4.             throw new IllegalArgumentException("Illegal Capacity: "+
    5.                                                initialCapacity);
    6.         this.elementData = new Object[initialCapacity];
    7.         this.capacityIncrement = capacityIncrement;
    8. }
    9. // 此两参参构造器的初始容量为指定大小,容量增量也为指定大小
    复制代码
    总结
    ​        从这三个构造器可以发现,焦点是两参构造器,也是自由度最高的,可以指定初始容量,以及容量增量,这就代表之后扩容的话,以容量增量 + 原来的容量进行扩容(当然遇到这种方式无法满意扩容要求,就会采用其他方式,看源码);其次自由度最高的是一参构造器,可以指定初始容量,但容量增量为 0 ,这就代表之后扩容的话,以原来的容量的二倍进行扩容(当然遇到这种方式无法满意扩容要求,就会采用其他方式,看源码);然后自由度最低的,无参构造器,初始容量为默认容量 10 ,但容量增量为 0 ,其扩容方式与一餐构造器划一。
  • 扩容过程

3- 底层结构和 ArrayList 的比较

集合底层结构版本线程安全(同步)服从扩容倍数ArrayList可变数组jdk1.2不安全,服从高如果有参构造1.5倍如果无参初始化后第一次为10第二次开始按1.5倍Vector可变数组Object[]jdk1.0安全,服从不高若是无参或一参,按原来的容量的2倍扩;若是两参,按原来的容量 + 增加容量扩
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

傲渊山岳

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表