ArrayList与LinkedList的区别

1.底层实现不同

ArrayList底层是动态数组实现的。

LinkedList底层是双向链表实现的。

2.操作数据的效率

ArrayList可以按照下标查询,时间复杂度为O(1)。而LinkedList不支持下标查询。

查找的话二者都是需要遍历的,所以时间复杂度都是O(n)。

新增和删除:

ArrayList头尾插入和删除都是O(1),对于其他部位修改都需要移动数组所以是O(n)。

LinkedList头尾也是O(1),其他部位插入和删除需要遍历链表,所以O(n)。

3.内存空间占用

ArrayList底层是数组,内存连续,省空间。

LinkedList底层是双向链表,需要存储一个数据两个指针,更占用内存。

4.线程安全

两者都不是线程安全的。

如何保证线程安全:

在方法内使用局部变量。(因为局部变量是存放在栈帧里的,每个线程有一个栈,他们是线程不共享的)

使用线程安全的ArrayList和LinkedList。

相关推荐
谢亮_vipxieliang3 分钟前
深入理解 JavaScript 数据类型与类型转换
开发语言·javascript·ecmascript
在所不辞兄11 分钟前
刚性问题误差容限设置技巧
深度学习·神经网络·算法·机器学习
IOT-Power11 分钟前
模板方法 + 策略模式
开发语言·c++
啊啊啊啊啊!!!!14 分钟前
unordered_map和unordered_set的使用
算法
EatFan16 分钟前
2026 Rust 后端技术栈选型:Axum 0.8 + Tokio + SQLx 全链路怎么搭
开发语言·后端·rust·tokio·serde·axum·sqlx
外收内放17 分钟前
Python基础语法练习题(59-原始版本与优化版本)
开发语言·python
2401_8888597121 分钟前
STM32H733 MPU、AXI、FMC学习
java·开发语言·stm32·spring
泡海椒28 分钟前
JQuick-Excel 实战:用 STYLE 配置单元格与区域样式
开发语言·python·excel
java_nnnn30 分钟前
LeetCode刷题双指针(快乐数+盛最多水的容器)Java
算法·leetcode·职场和发展
CV工程师丁Sir2 小时前
ArkWeb 手记 04|DevTools 调试与缓存清理
java·spring·缓存·harmonyos