ArrayList和LinkedList的区别

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

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

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

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

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

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

相关推荐
小小测试开发15 小时前
安装 Python 3.10+
开发语言·人工智能·python
AAA大运重卡何师傅(专跑国道)17 小时前
【无标题】
开发语言·c#
sugar__salt17 小时前
从栈队列数据结构到JS原型面向对象全解
前端·javascript·数据结构
XBodhi.17 小时前
Visual Studio C++ 语法错误: 缺少“;”(在“return”的前面)
开发语言·c++·visual studio
LSssT.18 小时前
【01】Python 机器学习
开发语言·python
心之伊始18 小时前
Java 后端接入大模型:从 Token、并发到推理成本的完整估算方法
java·spring boot·性能优化·大模型·llm
l1t18 小时前
DeepSeek总结的使用实体-组件-系统和基于存在性处理进行Python编程39-40
开发语言·python
BlackTurn19 小时前
技术经理投标
java
曾阿伦19 小时前
Python 搭建简易HTTP服务
开发语言·python·http
YG亲测源码屋19 小时前
java配置环境变量、jdk环境变量配置、java环境变量设置方法
java·开发语言