ToB企服应用市场:ToB评测及商务社交产业平台
标题:
3-Vector底层结构和源码分析
[打印本页]
作者:
傲渊山岳
时间:
2024-7-12 09:25
标题:
3-Vector底层结构和源码分析
3-Vector底层结构和源码分析
介绍汇总:
Vector的根本介绍
Vector的运行重要步骤
底层结构和 ArrayList 的比较
1-Vector的根本介绍
定义阐明
Vector 底层也是一个对象数组,protected Object[] elementData ;
Vector 是线程同步的,即线程安全,Vector 类的操纵方法带有 synchronized 。
public synchronized E set(int index, E element) {
if (index >= elementCount)
throw new ArrayIndexOutOfBoundsException(index);
E oldValue = elementData(index);
elementData[index] = element;
return oldValue;
}
复制代码
在开辟中,需要线程同步安满是,考虑使用 Vector 。
2-Vector的运行重要步骤
Vector 构造器(三种)
无参构造器
public Vector() {
this(10);
}
// 此无参构造器会调用一参构造器,并且初始容量大小为 10 ,容量增量大小为 0
复制代码
一参构造器
public Vector(int initialCapacity) {
this(initialCapacity, 0);
}
// 此一参构造器会调用两参构造器,并且初始容量为指定大小,容量增量大小为 0
复制代码
两参构造器
public Vector(int initialCapacity, int capacityIncrement) {
super();
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
this.elementData = new Object[initialCapacity];
this.capacityIncrement = capacityIncrement;
}
// 此两参参构造器的初始容量为指定大小,容量增量也为指定大小
复制代码
总结
从这三个构造器可以发现,焦点是两参构造器,也是自由度最高的,可以指定初始容量,以及容量增量,这就代表之后扩容的话,
以容量增量 + 原来的容量进行扩容(
当然遇到这种方式无法满意扩容要求,就会采用其他方式,看源码);其次自由度最高的是一参构造器,可以指定初始容量,但容量增量为 0 ,这就代表之后扩容的话,
以原来的容量的二倍进行扩容
(当然遇到这种方式无法满意扩容要求,就会采用其他方式,看源码);然后自由度最低的,无参构造器,初始容量为默认容量 10 ,但容量增量为 0 ,其扩容方式与一餐构造器划一。
扩容过程
3- 底层结构和 ArrayList 的比较
集合底层结构版本线程安全(同步)服从扩容倍数ArrayList可变数组jdk1.2不安全,服从高如果有参构造1.5倍如果无参初始化后第一次为10第二次开始按1.5倍Vector可变数组Object[]jdk1.0安全,服从不高若是无参或一参,按原来的容量的2倍扩;若是两参,按原来的容量 + 增加容量扩
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4