27 ArrayList 和 Vector 的区别是什么?
Posted ynzj123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
参考博文: https://www.cnblogs.com/williamjie/p/11158523.html
以上是关于27 ArrayList 和 Vector 的区别是什么?的主要内容,如果未能解决你的问题,请参考以下文章