参考博客
ArrayList与Vector区别
arrayList和vector的区别
ArrayList和Vector在java集合框架图中的位置
说明:对于以上的框架图有如下几点说明
-
所有集合类都位于
java.util
包下。Java的集合类主要由两个接口派生而出:Collection
和Map
,Collection
和Map
是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。 -
集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。
-
抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。
-
实现类:8个实现类(实线表示),对接口的具体实现。
-
Collection
接口是一组允许重复的对象。 -
Set
接口继承Collection
,集合元素不重复。 -
List
接口继承Collection
,允许重复,维护元素插入顺序。 -
Map
接口是键-值对象,与Collection
接口没有什么关系。 -
Set
、List
和Map
可以看做集合的三大类:
List
集合是有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问。Set
集合是无序集合,集合中的元素不可以重复,访问集合中的元素只能根据元素本身来访问(也是集合里元素不允许重复的原因)。Map
集合中保存Key-value
对形式的元素,访问时只能根据每项元素的key
来访问其value
。
ArrayList与Vector的主要区别
Vector
与ArrayList
一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector
,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问ArrayList
慢。
ArrayList与Vector的其他重要区别
如果集合中的元素的数目大于目前集合数组的长度时,Vector
增长率为目前数组长度的100%,而Arraylist
增长率为目前数组长度的50%.如过在集合中使用数据量比较大的数据,用Vector
有一定的优势。
ArrayList与Vector用法
- 因为
Vector
是线程同步的,而ArrayList
不是同步的,所以在需要线程同步的地方必须使用Vector
,除非增加了其他线程安全措施;而在不需要线程同步的地方,使用ArrayList
的执行效率更高。 - 因为
Vector
空间增长的速度大于ArrayList
,所以在数据量变化大的情况下使用Vector
的效率更高。