ArrayList 与 Vector 的区别和适用场景

ArrayList 有三个构造方法

//构造一个具有指定初始容量的空列表
public ArrayList(intinitialCapacity)
//构造一个初始容量为 10 的空列表
public ArrayList()
//构造一个包含指定 collection 的元素的列表
public ArrayList(Collection c)

Vector 有四个构造方法

//使用指定的初始容量和等于零的容量增量构造一个空向量
public Vector() 
//构造一个空向量,使其内部数据数组的大小,其标准容量增量为零。
public Vector(int initialCapacity) 
//构造一个包含指定 collection 中的元素的向量
public Vector(Collection c)
//使用指定的初始容量和容量增量构造一个空的向量
public Vector(int initialCapacity, int capacityIncrement)
ArrayList 和 Vector 都是用数组实现的主要有这么四个区别:
  1. Vector 是多线程安全的,线程安全就是说多线程访问代码,不会产生不确定的结果。而 ArrayList 不是,这可以从源码中看出,Vector 类中的方法很多有 synchronied 进行修饰,这样就导致了 Vector 在效率上无法与 ArrayLst 相比;
  2. 两个都是采用的线性连续空间存储元素,但是当空间充足的时候,两个类的增加方式是不同。
  3. Vector 可以设置增长因子,而 ArrayList 不可以。
  4. Vector 是一种老的动态数组,是线程同步的,效率很低,一般不赞成使用。
适用场景:
  • Vector 是线程同步的,所以它也是线程安全的,而 ArraList 是线程异步的,是不安全的。如果不考虑到线程的安全因素,一般用 ArrayList 效率比较高。
  • 如果集合中的元素的数目大于目前集合数组的长度时,在集合中使用数据量比较大的数据,用 Vector 有一定的优势。

你可能感兴趣的:(ArrayList 与 Vector 的区别和适用场景)