27 ArrayList 和 Vector 的区别是什么?
ArrayList 和 Vector 的区别是什么?
答:
List接口一共有三个实现类,分别是ArrayList、Vector和LinkedList。
List用于存放多个元素,能够维护元素的次序,并且允许元素的重复。
主要区别:
同步性:Vector是线程安全的,用synchronized实现线程安全,而ArrayList是线程不安全的。(实现同步需要很高的花费,所以访问Vector比访问ArrayList慢)
数据容量增长:二者都有一个初始容量大小,采用线性连续存储空间,当存储的元素的个数超过了容量时,就需要增加二者的存储空间,Vector增长原来的一倍,ArrayList增加原来的0.5倍。
总结:
LinkedList:增删改快
ArrayList:查询快(有索引的存在)
如果只有一个线程会访问到集合,那最好使用ArrayList,因为它不考虑线程安全,效率会高些;如果有多个线程会访问到集合,那最好是使用Vector,因为不需要我们再去考虑和编写线程安全的代码。
拓展:
LinkedList和ArrayList都是通过数组实现。缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中。
LinkedList是用链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢。另外,他还提供了List接口中没有定义的方法,专门用于操作表头和表尾元素,可以当作堆栈、队列和双向队列使用。
参考博文: https://blog.csdn.net/ldxlz224/article/details/52574821
相关推荐
shayuchaor 2020-04-20
fengyun 2020-06-14
shenxiuwen 2020-05-29
付春杰Blog 2020-05-31
zhuyonge 2020-05-09
luohui 2020-04-29
fraternityjava 2020-04-29
gongruitao 2020-03-05
xiaouncle 2020-07-31
源码物语 2020-07-18
XGQ 2020-06-21
OldBowl 2020-06-11
zagnix 2020-06-04
xhao 2020-06-04
ilovewqf 2020-05-30
XGQ 2020-05-26
zcpHappy 2020-04-30