[知识学习] 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和Vector的区别 ---学习笔记

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

Array / ArrayList / Vector / LinkedList / Hashmap区别

ArrayList 实现List接口 ,随着向 ArrayList 中不断添加元素,其容量也自动增长 Vector向量 不过我是不太喜欢这个类 HashMap实现Map接口--可以说内存就是一个Has...

Java中Vector和ArrayList的区别

Java中Vector和ArrayList的区别       首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList、Vector和LinkedList。L...

Java中Vector和ArrayList的区别

首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList、Vector和LinkedList。List用于存放多个元素,能够维护元素的次序,并且允许元素的重复。3个具体...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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