ArrayList和LinkedList的区别?
版本说的都是jdk1.8的版本
共同点
- 存储有序的,可重复的数据、都是Lise接口的实现类
不同点
- 存储数据的结构不同、初始数据属性容量大小和扩容不同、CRUD速度不同
存储数据的结构不同
- ArrayList:底层存储数据结构为数组
- linkedList:底层存储数据结构为双向链表结构
初始数据属性容量大小和扩容不同
- ArrayList:默认初始容量为10、而ArrayList是动态扩容、随着向 ArrayList 中不断添加元素,其容量也自动增长、扩容的容量为1.5倍
- linkedList:底层存储数据结构为双向链表结构、所以不存在扩容的现象。
CRUD速度不同
-
随机访问效率:ArrayList 比 LinkedList 在随机访问的时候效率要高,因为 LinkedList 是线性的数据存储方式,所以需要移动指针从前往后依次查找。
-
增加和删除效率:在非首尾的增加和删除操作,LinkedList 要比 ArrayList 效率要高,因为 ArrayList 增删操作要影响数组内的其他数据的下标。
-
综合来说,在需要频繁读取集合中的元素时,更推荐使用 ArrayList,而在插入和删除操作较多时,更推荐使用 LinkedList。