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。

相关推荐
霸道流氓气质3 分钟前
Mermaid 图表完全指南:从文本语法到LangGraph4j工作流可视化实战
开发语言·python
❀͜͡傀儡师8 分钟前
Spring Boot 实现图片盲水印:基于 DCT 频域算法的隐形数字水印
spring boot·算法
晴空蓝天11 分钟前
MDC traceId 全链路日志追踪:Spring Boot 3.5 里把日志串成一条线
java·spring boot·后端·python
泡海椒17 分钟前
JQuick-Excel 项目定位与适用场景:声明式 Java Excel 的边界
java·开发语言·excel
AC赳赳老秦20 分钟前
财报附注表格精准提取:OpenClaw 从 PDF 年报附注挖掘隐藏明细,补齐财务分析维度
java·汇编·c++·python·青少年编程·deepseek·openclaw
Zane199422 分钟前
贪心算法大多靠不住,为什么Dijkstra的贪心选择偏偏能保证全局最优
算法
箓维26 分钟前
线程的优缺点,与进程的关联和差异
java·服务器·笔记
CQU_JIAKE26 分钟前
9.26【A】
算法
曹牧28 分钟前
Spring MVC:@RequestMapping
java·spring·mvc
slandarer33 分钟前
MATLAB | R2026b 更新了哪些有趣的新东西
开发语言·数据库·matlab