码迷,mamicode.com
首页 > 其他好文 > 详细

ArrayList 和 Vector 的区别

时间:2017-02-18 17:03:20      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:java   数组   多个   list   利用   包括   存储空间   顺序   hash   

这两个类都实现了 List 接口( List 接口继承了 Collection 接口),他们都是有序集合,即存
储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位
置索引号取出某个元素,,并且其中的数据是允许重复的,这是
HashSet 之类的集合的最大
不同处,
HashSet 之类的集合不可以按索引号去检索其中的元素,也不允许有重复的元素
(本来题目问的与
hashset 没有任何关系,但为了说清楚 ArrayList Vector 的功能,我们
使用对比方式,更有利于说明问题)。
接着才说
ArrayList Vector 的区别,这主要包括两个方面: .
1)同步性:
Vector 是线程安全的,也就是说是它的方法之间是线程同步的,而 ArrayList 是线程
序不安全的,它的方法之间是线程不同步的。如果只有一个线程会访问到集合,那最好是使
ArrayList,因为它不考虑线程安全,效率会高些;如果有多个线程会访问到集合,那最
好是使用
Vector,因为不需要我们自己再去考虑和编写线程安全的代码。
备注:对于
Vector&ArrayListHashtable&HashMap,要记住线程安全的问题,记住 Vector
Hashtable 是旧的,是 java 一诞生就提供了的,它们是线程安全的,ArrayList HashMap
java2时才提供的,它们是线程不安全的。所以,我们讲课时先讲老的。

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

ArrayList 和 Vector 的区别

标签:java   数组   多个   list   利用   包括   存储空间   顺序   hash   

原文地址:http://www.cnblogs.com/fifiyong/p/6413291.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!