[知识学习] ArrayList和Vector的区别

原创 2013年12月04日 10:47:13
今天同学突然问到ArrayList和Vector的区别,心里一片茫然。。。。所以尽快查了一下,记录下来,加深记忆。

首先,ArrayList和Vector功能类似。Vector从Java 1.0起就存在,ArrayList从Java 1.2起才存在,较新。所以Vector在JavaME、Card等各种微小版本都可以使用,而ArrayList不能用。

1. 线程安全
Vector是同步的, 而ArrayList不是.
因为Vector是同步的, 所以它是线程安全的.
同样, 因为Vecotr是同步的, 所以他需要额外的开销来维持同步锁, 所以它要比ArrayList要慢.(理论上来说)。
当然也可用Collection.synchronizedList(List)来得到一个线程安全的List。

2. 容量增长
Vector和ArrayList都是动态数组。当数组容量不足时,都可以对数组进行扩容。Vector允许用户自己设置capacityIncrement,所以Vector在扩容时,会尝试按照预先设置的capacityIncrement作为增量来设置。而ArrayList则直接将容量扩大一倍。

举个例子,如果Vector和ArrayList当前容量都为1000,用户对Vector设置的capacityIncrement为200。当容量不够需要扩容时,Vector会首先增加200,扩容后容量为1200;而ArrayList容量则为2000.
如果capacityIncrement设为0或者负值, Vector就会做和ArrayList一样, 每次都将数组大小扩大一倍。

不过,据Jack Shirazi在OnJava上的一篇文章来看,两者在同步的问题上性能上差不多。
所以在一般情况下, 还是鼓励用ArrayList的, 如果你有同步控制的需要, 那就用Vector吧。省的再用Collection.synchronizedList(List)来转换一次,而且转换后代码的可读性也会不好。

参考http://blog.csdn.net/foart/article/details/4263387
初次写博,如有什么问题,请在下面直接回复。

ArrayList LinkList和vector的区别

  • 2014年06月18日 14:38
  • 23KB
  • 下载

ArrayList和Vector的区别 ---学习笔记

这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,...

ArrayList LinkedList Vector区别

  • 2014年08月22日 14:15
  • 20KB
  • 下载

面试知识点--Vector和ArrayList的比较

Vector和ArrayList也是面试过程经常提问到的java基础知识,但是我们很多人容易忽略它们,这里总结一下他们的相同和不同,希望能提高和丰富一下我们的基础知识。Vector和ArrayList...

Java容器类List、ArrayList、Vector及map、HashTable、HashMap的区别与用法

ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢...

java中List接口的实现类 ArrayList,LinkedList,Vector 的区别 list实现类源码分析

java面试中经常被问到list常用的类以及内部实现机制,平时开发也经常用到list集合类,因此做一个源码级别的分析和比较之间的差异。 首先看一下List接口的的继承关系: list接口继承Col...

Array / ArrayList / Vector / LinkedList / Hashmap区别

ArrayList 实现List接口 ,随着向 ArrayList 中不断添加元素,其容量也自动增长 Vector向量 不过我是不太喜欢这个类 HashMap实现Map接口--可以说内存就是一个Has...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[知识学习] ArrayList和Vector的区别
举报原因:
原因补充:

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