java arraylist 与 vector 的区别

时间:2018-11-14
本文章向大家介绍java 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倍。