请问ArrayList
/LinkedList
/Vector
的异同?谈谈你的理解?ArrayList
底层是什么?扩容机制?Vector
和ArrayList
的最大区别?
1.ArrayList
和LinkedList
的异同
二者都线程不安全
,相对线程安全的Vector
,执行效率高
。
此外,ArrayList
是实现了基于动态数组的数据结构,LinkedList
基于链表的数据结构。对于随机访问get
和set
,ArrayList觉得优于LinkedList
,因为LinkedList
要移动指针。对于新增和删除操作add
(特指插入)和remove
,LinkedList比较占优势,因为ArrayList
要移动数据。
2.ArrayList
和Vector
的区别
Vector和ArrayList几乎是完全相同的,唯一的区别在于Vector是同步类(synchronized
),属于强同步类
。因此开销就比ArrayList要大,访问要慢。正常情况下,大多数的Java程序员使用ArrayList而不是Vector,因为同步完全可以由程序员自己来控制。Vector每次扩容请求其大小的2倍空间,而ArrayList是1.5倍
。Vector还有一个子类Stack。
One comment
谢谢分享,每日打卡,学生卡~୧(๑•̀⌄•́๑)૭