ArrayList和LinkedList的区别

  1. **底层数据结构**:ArrayList基于动态数组实现,内部维护一个Object数组,默认初始容量为10,当元素数量超过当前容量会自动扩容

  2. **随机访问效率高**:基于数组,ArrayList通过索引访问元素,时间复杂度为O(1)

  3. **插入和删除效率低**:在中间或开头插入/删除元素时,需要移动后续元素,时间复杂度为O(n)

  4. **适合随机访问**:对于频**繁随机访问元素**的场景,ArrayList性能更好

LinkedList

  1. **底层数据结构**:LinkedList基于双向链表实现,每个节点包含数据元素和指向前后节点的引用

  2. **插入和删除效率高**:在任意位置插入/删除元素时,只需要调节相邻节点的引用,时间复杂度为O(1)

  3. **顺序访问效率低**:由于基于链表,不能随机访问,需要从头到尾开始遍历,时间复杂度为O(n)

  4. **适合频繁插入和删除**:对于频繁插入和删除的场景,效果更好

特殊情况

头插法插入数据:

​ AarrayList需要将元素依次向后移动,时间复杂度为O(n);

​ LinkedList只需要调整指针,时间复杂度为O(1)

**<u>*尾插法*</u>**插入数据:

​ ArrayList在尾部插入元素的时间复杂度为 O(1)

​ LinkedList在尾部插入元素也是O(1)

两者尾插法 都一样的效率

相同

  • 不同步

  • 线程不安全

  • 但是效率高

相关推荐
Joy T2 小时前
Agent 确定性上下文设计:从 Prompt 参数注入到能力分层
java·开发语言·微服务·架构·prompt·agent context
m0_587383005 小时前
广州 24 小时自助健身房解决方案技术实现与实战指南
java·spring·小程序·架构·需求分析
·云扬·5 小时前
Prompt 工程与安全:从 System 设计到注入防御
java·人工智能·安全·ai·prompt
代码不停6 小时前
自动化测试(java)
java·开发语言·selenium·自动化
鬼手点金8 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github
paopaokaka_luck8 小时前
滑雪场管理系统(AI智能助手流式对话,ECharts 运营数据分析、教练、雪具与场地一体化预约,钱包支付退款、订单核销与服务评价)
java·人工智能·spring boot·网络协议·数据分析·echarts
Wang's Blog9 小时前
Java 项目实战: 交友项目 - Dubbo 的内部结构与一次调用的完整链路
java·dubbo
Wang's Blog9 小时前
Java 项目实战: 交友项目 - Dubbo 入门引导
java·dubbo·交友
蜗牛互联网10 小时前
Python Agent工具调用的白名单、参数校验与审批门禁
java·服务器·前端·人工智能·后端·python
SL_staff10 小时前
当规则引擎开始‘懂业务’:JVS-Rules金融风控四大原生能力拆解
java·python·全栈