arraylist和vector区别

arraylist有三个构造方法:

public ArrayList(int initialCapacity)//构造一个具有指定初始容量的空列表。
public ArrayList()//构造一个初始容量为 10 的空列表。
public ArrayList(Collection<? extends E> c)//构造一个包含指定 collection 的元素的列表

Vector 有四个构造方法:

public Vector()//使用指定的初始容量和等于零的容量增量构造一个空向量。
public Vector(int initialCapacity)//构造一个空向量,使其内部数据数组的大小,其标准容量增量为零。
public Vector(Collection<? extends E> c)//构造一个包含指定 collection 中 的元素的向量
public Vector(int initialCapacity,int capacityIncrement)//使用指定的初始容量和容量增量构造一个空的向量

ArrayList 和 Vector 都是用数组实现的,主要有这么四个区别:
(1) Vector 是多线程安全的,线程安全就是说多线程访问同一代码,不会产生不确定的结果。
而 ArrayList 不是,这个可以从源码中看出,Vector 类中的方法很多有 synchronized 进行
修饰,这样就导致了 Vector 在效率上无法与 ArrayList 相比;
(2) 两个都是采用的线性连续空间存储元素,但是当空间不足的时候,两个类的增加方式不
同。
(3) Vector 可以设置增长因子,而 ArrayList 不可以。
(4) Vector 是一种老的动态数组,是线程同步的,效率很低,一般不赞成使用。

适用场景分析:
1) Vector 是线程同步的,所以它也是线程安全的,而 ArrayList 是线程异步的,是不安全的。
如果不考虑到线程的安全因素,一般用 ArrayList 效率比较高。
2) 如果集合中的元素的数目大于目前集合数组的长度时,在集合中使用数据量比较大的数
据,用 Vector 有一定的优势。

猜你喜欢

转载自blog.csdn.net/lthahaha/article/details/114236001