JAVA的ArrayList 和 LinkedList的区别

ArrayList 和 LinkedList 都是 Java 中常用的 List 接口的实现类,主要的区别有:

  1. 底层数据结构不同

-ArrayList 底层使用的是动态数组数据结构,LinkedList 底层使用的是双向链表数据结构。

  1. 获取元素效率不同

ArrayList 支持快速随机访问,通过索引直接获取元素,时间复杂度为 O(1)。

LinkedList需要从头节点开始遍历查找元素,时间复杂度为 O(n)。

  1. 添加删除元素效率不同

ArrayList要移动元素,时间复杂度为 O(n)。

LinkedList只需要改变节点的指针,时间复杂度为 O(1)。

  1. 内存空间占用不同

ArrayList的空间浪费主要在在list列表的结尾会预留一定的容量空间,而LinkedList的空间花费则在每个元素都需要消耗比ArrayList更多的空间(因为要存放直接后继和直接前驱以及数据)。

  1. 线程安全性不同

ArrayList 和 LinkedList 都是非线程安全的,用于多线程环境时需要用

Collections.synchronizedList 方法包装。

所以一般来说,如果需要频繁添加删除元素,使用LinkedList比较好,如果需要频繁随机访问元素,使用ArrayList比较好。

相关推荐
小猪皮蛋粥6 分钟前
python画图
开发语言·python
Felven6 分钟前
A. The 67th Integer Problem
开发语言
zopple9 分钟前
Laravel7.x核心特性全解析
开发语言·php·laravel
wjs202410 分钟前
MVC 应用程序
开发语言
studyForMokey10 分钟前
【Android面试】Java专题 todo
android·java·面试
lly20240611 分钟前
ionic 模态窗口:全面解析与最佳实践
开发语言
小白学大数据12 分钟前
解决 Python 爬虫被限制:延迟抓取指令深度解析
开发语言·c++·爬虫·python
一只大袋鼠15 分钟前
MyBatis 特性(三):缓存、延迟加载、注解开发
java·数据库·笔记·sql·缓存·mybatis
qq_120840937123 分钟前
Three.js 工程向:EffectComposer 后处理链路与色彩管理
开发语言·前端·javascript
老毛肚27 分钟前
Redis高级
java·数据库·redis