ArrayList、LinkedList、Vector的区别。

时间:2021-11-13 19:45:47

LinkedList与其他二者的区别

首先,LinkedList是相对于其他两个最大不同的,因为底层实现就完全不是一种思路。

ArrayList,Vector 的底层实现是扩容数组,而LinkedList的底层实现是双向链表。具体源码解析请看我的这篇博客:

ArrayList和LinkedList的源码解析

tip:由于LinkedList 是双向链表,可以用来代替过时的Stack类.

Vector是线程安全的线性表。

乍一看,ArrayList与Vector并无区别,都是扩容数组实现,但是在Vector的源码中有“synchronized”的存在,所以我们可以说Vector是唯一的线程安全的线性表.

tip:

线程安全的集合有:V!SHE:Vector(ArrayList),StringBuffer(StringBuilder),Hashtable(HashMap),Enumeration

括号内的为对应的线程不安全的版本.一般情况下使用线程不安全的版本,因为线程安全需要付出效率上的代价

Arraylist则是正常的线性表

ArrayList,Vector是扩容线性表,默认容量都为10,扩容方法稍微有些不同。线程不安全.