ArrayList和Vector的异同

原创 2016年06月04日 15:44:38
这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,,并且其中的数据是允许重复的,这是HashSet之类的集合的最大不同处,HashSet之类的集合不可以按索引号去检索其中的元素,也不允许有重复的元素(本来题目问的与hashset没有任何关系,但为了说清楚ArrayList与Vector的功能,我们使用对比方式,更有利于说明问题)。

接着才说ArrayList与Vector的区别,这主要包括两个方面:. 

(1)同步性:

Vector是线程安全的,也就是说是它的方法之间是线程同步的,而ArrayList是线程序不安全的,它的方法之间是线程不同步的。如果只有一个线程会访问到集合,那最好是使用ArrayList,因为它不考虑线程安全,效率会高些;如果有多个线程会访问到集合,那最好是使用Vector,因为不需要我们自己再去考虑和编写线程安全的代码。

备注:对于Vector&ArrayList、Hashtable&HashMap,要记住线程安全的问题,记住Vector与Hashtable是旧的,是java一诞生就提供了的,它们是线程安全的,ArrayList与HashMap是java2时才提供的,它们是线程不安全的。所以,我们讲课时先讲老的。

(2)数据增长:

ArrayList与Vector都有一个初始的容量大小,当存储进它们里面的元素的个数超过了容量时,就需要增加ArrayList与Vector的存储空间,每次要增加存储空间时,不是只增加一个存储单元,而是增加多个存储单元,每次增加的存储单元的个数在内存空间利用与程序效率之间要取得一定的平衡。Vector默认增长为原来两倍,而ArrayList的增长策略在文档中没有明确规定(从源代码看到的是增长为原来的1.5倍)。ArrayList与Vector都可以设置初始的空间大小,Vector还可以设置增长的空间大小,而ArrayList没有提供设置增长空间的方法。
总结:即Vector增长原来的一倍,ArrayList增加原来的0.5倍。
版权声明:欢迎转载,转载请标明转载地址,谢谢合作^.^

Java进阶(四十六)简述ArrayList、Vector与LinkedList的异同点

简述ArrayList、Vector与LinkedList的异同点  Collection类的继承图如下:   从图中可以看出,LinkedList与ArrayList、ArrayDeque这三者都...
  • sunhuaqiang1
  • sunhuaqiang1
  • 2016年10月08日 20:27
  • 43842

Vector,ArrayList,LinkedList 的区别是什么?

简要概括: 1、Vector、ArrayList都是以类似数组的形式存储在内存中,LinkedList则以链表的形式进行存储。 2、List中的元素有序、允许有重复的元素,Set中的元素无序、不允...
  • xuanjiewu
  • xuanjiewu
  • 2016年01月26日 10:21
  • 972

java基础之ArrayList和Vector的主要区别;

List接口下一共实现了三个类:ArrayList,Vector,LinkedList。 LinkedList主要保持数据的插入顺序的时候使用,采用链表结构。ArrayList,Vector主要区别...
  • ldxlz224
  • ldxlz224
  • 2016年09月18日 15:19
  • 1501

ArrayList和Vector区别以及其扩容机制

ArrayList和Vector区别以及其扩容机制 相同点:   1、ArrayList和Vector都是继承了相同的父类和实现了相同的接口     (extends AbstractList im...
  • dietime1943
  • dietime1943
  • 2017年01月09日 15:40
  • 830

java集合框架05——ArrayList和LinkedList的区别

前面已经学习完了List部分的源码,主要是ArrayList和LinkedList两部分内容,这一节主要总结下List部分的内容。 List概括 先来回顾一下List在Collection中的的框架图...
  • eson_15
  • eson_15
  • 2016年04月13日 20:39
  • 8917

Java ArrayList、LinkedList和Vector的使用及性能分析

第1部分 List概括 List 是一个接口,它继承于Collection的接口。它代表着有序的队列。 AbstractList 是一个抽象类,它继承于AbstractCollection。A...
  • guoweimelon
  • guoweimelon
  • 2016年03月04日 11:01
  • 1622

ArrayList 和 LinkedList 和Vector使用上有什么区别?实现上有什么区别?

ArrayList 和 Vector 使用上有什么区别?实现上有什么区别?Vector和ArrayList在使用上非常相似,都可用来表示一组数量可变的对象应用的集合,并且可以随机地访问其中的元素。 ...
  • u012373815
  • u012373815
  • 2015年11月30日 10:19
  • 1263

ArrayList和Vector的扩容机制

ArrayList中ensureCapacity扩容,trimToSize容量调整到适中,Vector的扩容,是可以指定扩容因子,同时Vector扩容策略是:原来容量的2倍与原来容量+扩容因子,两者中...
  • seapeak007
  • seapeak007
  • 2016年11月28日 17:31
  • 1757

关于ArrayList和Vector空间利用率的一点探索

看到一篇java方面的文章其中提到ArrayList和Vector俩容器,文章作者提到Vector的空间利用率比ArrayList要大,最有意思的是他说Vector的空间利用率能达到100%。看到这里...
  • Javanjg
  • Javanjg
  • 2016年11月03日 21:35
  • 669

一道关于:ArrayList、Vector、LinkedList的存储性能和特性 的面试题

ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢...
  • u014044812
  • u014044812
  • 2015年09月09日 22:46
  • 2116
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ArrayList和Vector的异同
举报原因:
原因补充:

(最多只允许输入30个字)