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。

相关推荐
BS30813_vx1 分钟前
【编号:01652】Spring Boot村务管理系统:财务公开、党建活动与计生服务一体化实战
开发语言·python
孙6903422 分钟前
Spring 注入多例 Bean
java·spring
Jul1en_3 分钟前
【Java 脚手架】封装通用工具类-3
java·开发语言·redis·缓存·ai·bootstrap·rabbitmq
学习星球11 分钟前
2026年AI Agent全栈开发实战——从Prompt到Production
开发语言·人工智能·prompt
_Narcissus_33 分钟前
分治&递归
数据结构·c++·笔记·算法·leetcode·递归·分治
Fluxart.ai34 分钟前
商品多角度图怎么做?Flux Art 从白底图到规格图、包装图的 10 步教程
开发语言·前端·javascript
明志数科34 分钟前
具身智能数据工程全链路解析:从真实产线采集到LeRobot适配
网络·人工智能·算法
边境悍匪39 分钟前
springboot常用注解
java·spring boot·学习
小O的算法实验室43 分钟前
AAAI-26,Lehmer编码搜索排列空间的理论与实证分析
算法