Vector概述
- Vector底层也是一个对象数组,protected Object[] elementData
- Vector是线程同步的,即线程安全,因为Vector 类的操作方法带有 synchronized,但效率不高。
- 在开发中,需要线程同步安全时,考虑使用Vector;如果不需要线程安全,推荐使用ArrayList代替Vector。
- Vector是动态数组实现的List,跟ArrayList一样,其容量能自动增长。
- Vector适用于快速访问和修改,不适用随机插入和删除。
- Vector初始容量大小为10,扩容由初始容量和capacityIncrement共同决定。
- Vector元素允许为null。
扩容机制
如果是无参,默认容量10,容量满后,就按2倍扩容
如果有参指定大小,则每次直接按2倍扩容
Vector与ArrayList比较
Vector与ArrayList的最大区别就是Vector是线程安全的,而ArrayList不是线程安全的。另外区别还有:
- ArrayList不可以设置扩展的容量,默认1.5倍
- Vector可以设置扩展的容量,如果没有设置,默认2倍
- ArrayList的无参构造方法中初始容量为0(初次调用add()会更新为10)
- Vector的无参构造方法中初始容量为10
- Vector线程安全
- ArrayList线程不安全
存储结构
// 存储元素
protected Object[] elementData;
// 实际元素个数
protected int elementCount;
// 扩容时增加量,大于0增加capacityIncrement,否则翻倍
protected int capacityIncrement;
Vector是一个线程安全的动态数组,适合快速访问和修改,但效率较低。它的扩容默认按2倍增长,初始容量为10。相比之下,ArrayList非线程安全,通常在不需要线程同步时使用,其扩容默认按1.5倍增长,初始容量可能为0。两者都允许元素为null,但Vector提供了设置扩展容量的能力。
46万+

被折叠的 条评论
为什么被折叠?



