ArrayList和LinkedList的区别

首先,ArrayList的底层数据结构是一个动态扩容的数组,LinkedList的底层数据结构是一个双向链表。

其次,由于ArrayList的底层是一个数组,由于有下标索引,所以ArrayList支持数据的随机访问,其时间复杂度为O(1),而LinkedList底层是一个链表,当我们想要随机访问某一个元素时,只能通过遍历整个链表的形式来查询对应的元素,其时间复杂度为O(N),所以,在需要大量、频繁随机读取元素的场景中,ArrayList是更合适的选择

然后,就是数据的插入和删除这块,头插和头删这块,由于LinkedList的底层是一个双向链表,此时只需要调整头指针即可,时间复杂度为O(1),由于ArrayList的头插涉及到数据的迁移,其头插的效率是不如LinkedList的

尾插情况下,如果尾插时ArrayList没有扩容操作,此时只需在对应的位置插入数据即可,但是尾插时如果触发的扩容操作,此时涉及到数组复制的操作,效率就会变低,而LinkedList尾插时只需要调整尾指针即可

然后就是尾删的情况,尾删的情况下,ArrayList和LinkedList的效率是差不多的

但是由此可见,LinkedList适合用户数据的频繁的删除和插入的场景下使用

相关推荐
mOok ONSC几秒前
Spring Boot 3.4 正式发布,结构化日志!
java·spring boot·后端
rainy雨2 分钟前
质量工具系统功能详解:针对检验效率低与追溯困难场景的质量工具应用方案
java·大数据·数据库·人工智能·精益工程
jessecyj5 分钟前
分布式推理框架 xDit
java
遇见你...6 分钟前
B02 SpringMVC的请求和相应
java·开发语言
浅念-12 分钟前
Linux 进程与操作系统
linux·运维·服务器·网络·数据结构·笔记·网络协议
weixin_4492900112 分钟前
Elasticsearch各版本特性对比
java·大数据·elasticsearch
计算机安禾12 分钟前
【数据结构与算法】第20篇:二叉树的链式存储与四种遍历(前序、中序、后序、层序)
c语言·开发语言·数据结构·c++·学习·算法·visual studio
_MyFavorite_17 分钟前
JAVA重点基础、进阶知识及易错点总结(17)线程安全 & synchronized 同步锁
java·开发语言·安全
_MyFavorite_18 分钟前
JAVA重点基础、进阶知识及易错点总结(13)File 类 + 路径操作
java·开发语言
Lyyaoo.18 分钟前
Spring Boot自动配置
java·spring boot·后端