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。

相关推荐
show433几秒前
多格式导出怎么做?2026免费小程序TXT/SRT实践
开发语言·小程序·c#
circuitsosk1 分钟前
长文本与高并发下的Token“瘦身”策略:Prompt压缩与上下文窗口优化
java·前端·python·prompt·上下文窗口·token优化
wabs6662 分钟前
关于图论【最短路径之Bellman_ford 算法|卡码网94.城市间货物运输的思考】
数据结构·算法·图论·卡码网·bellman_ford·求最短路径
岁岁养乐多3 分钟前
LangChain4j 工厂模式
java·开发语言
MrZhao4004 分钟前
On-Policy Distillation(OPD):为什么大模型后训练要在学生自己的轨迹上蒸馏?
算法
小小龙学IT13 分钟前
Day 28 项目调试与优化 —— 给聊天室做一次“全面体检“
c语言·开发语言
朱峥嵘(朱髯)14 分钟前
数据库如何根据全表 NDV 估算子集的 NDV
数据库·算法
小小小米粒14 分钟前
idea常用搭配
java
吃饱了得干活16 分钟前
Java Map 核心原理:从数据结构到 put/get 执行,一篇彻底讲透
java·后端
晚安code16 分钟前
Java并发集合详解:从HashMap到ConcurrentHashMap
java