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。

相关推荐
代码栈上的思考6 分钟前
双指针法:从三道经典题看双指针的核心思想
数据结构·算法
流云细水10 分钟前
Spec实战:需求编辑与需求评审
java·人工智能
柴郡猫乐园12 分钟前
JDK中一个单例模式的实现
java·开发语言·单例模式
星空彼岸00713 分钟前
SA-Token在SpringBoot中的实战指南
java·spring boot·后端
闻哥17 分钟前
ConcurrentHashMap 1.7 源码深度解析:分段锁的设计与实现
java·开发语言·jvm·spring boot·面试·jdk·hash
J-TS20 分钟前
线性自抗扰控制LADRC
c语言·人工智能·stm32·单片机·算法
Ivanqhz34 分钟前
半格与数据流分析的五个要素(D、V、F、I、Λ)
开发语言·c++·后端·算法·rust
liann11940 分钟前
4.3.2_WEB——WEB后端语言——PHP
开发语言·前端·网络·安全·web安全·网络安全·php
董厂长1 小时前
用 LangGraph 实现 Small-to-Big 分块检索策略
人工智能·算法·rag
大江东去浪淘尽千古风流人物1 小时前
【Sensor】IMU传感器选型车轨级 VS 消费级
人工智能·python·算法·机器学习·机器人