ArrayList效率分析与LinkedList性能对比

一、ArrayList

1.数据结构

数组 -> 顺序表。

2.插入数据

在数组中间插入数据,其后的数据都会往后copy,时间复杂度为O(n)。

3.删除数据

与插入类似,同样涉及数据的copy,时间复杂度为O(n)。

4.查找元素

通过下标查找元素,非常快,时间复杂度为O(1)。

二、LinkedList

1.数据结构

链表。

2.插入数据

指定位置上断开链表,插入新元素,重新连接成链表,时间复杂度为O(1)。

3.删除元素

指定位置上断开链表,删除元素,重新连接成链表,时间复杂度为O(1)。

4.查找元素

遍历链表查找指定元素,时间复杂度为O(n)。

三、对比

插入和删除效率,LinkedList更快。

查找效率,ArrayList更快。

四、思考

1.如果一个数组要反复插入删除,怎么优化降低时间复杂度?

当删除元素时,并不是真正删除元素,而是将删除的位置标记为null或其他标记,当内部不足时,使用for循环遍历数据,删除被标记为null的元素。(JVM使用到的标记-删除算法)

相关推荐
上不如老下不如小2 小时前
2025年第七届全国高校计算机能力挑战赛初赛 Java组 编程题汇总
java·计算机能力挑战赛
星释2 小时前
Rust 练习册 67:自定义集合与数据结构实现
数据结构·算法·rust
泉城老铁2 小时前
Springboot对接mqtt
java·spring boot·后端
源码_V_saaskw2 小时前
JAVA国际版同城跑腿源码快递代取帮买帮送同城服务源码支持Android+IOS+H5
android·java·ios·微信小程序
TT哇2 小时前
消息推送机制——WebSocket
java·网络·websocket·网络协议
镜花水月linyi2 小时前
ConcurrentHashMap 深入解析:从0到1彻底掌握(1.3万字)
java·后端
极客Bob2 小时前
Java 集合操作完整清单(Java 8+ Stream API)
java
雨中飘荡的记忆2 小时前
Javassist实战指南
java
Knight_AL2 小时前
JWT 无状态认证深度解析:原理、优势
java·jwt
寒山李白3 小时前
IDEA中如何配置Java类注释(Java类注释信息配置,如作者、备注、时间等)
java