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。

相关推荐
u0111026758 分钟前
图片生成任务的日志记录与敏感信息取舍
前端·图像处理·算法·ai作画
en.en..9 分钟前
volatile 关键字整理(嵌入式 C 标准)
java·开发语言
captain37613 分钟前
Spring IoC和DI(2)
java·后端·spring
Shaoshing16 分钟前
高可用与核心概念
java·mq
花间相见37 分钟前
【计算基础|MySQL08】索引(上):为什么是 B+ 树
数据结构·mysql·算法·架构
Ai-_Man42 分钟前
ChatGPT还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·javascript·人工智能·chatgpt·小程序·ecmascript
问天_观心1 小时前
模型微调学习(二)
开发语言·人工智能·学习·语言模型·github
小羊没烦恼!1 小时前
深入浅出SQL Server中的死锁
java·开发语言·前端·数据库·后端·spring·c#
白露与泡影1 小时前
Java 面试八股文及答案整理 | 后端面试高频题(2026)
java·开发语言·面试
吠品1 小时前
Flutter 工程配本地 Maven 引 AAR,仓库声明为啥不生效
c语言·人工智能·算法