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使用到的标记-删除算法)

相关推荐
蛋蛋的就会顺顺的26 分钟前
hot100——矩阵
java·数据结构·算法·leetcode·力扣
周杰偷奶茶44 分钟前
【Java】数组的定义和使用(附管理系统实战案例)
java·开发语言
橙子圆1231 小时前
JUC之集合类不安全
java·开发语言
学代码的CJY1 小时前
从代码出发理解时间复杂度与空间复杂度
数据结构·算法
谢亮_vipxieliang2 小时前
Stream API 不是银弹:常见坑与性能建议
java·开发语言
源码宝2 小时前
Web‑PACS 云影像源码|Java+Vue3 医院影像管理系统完整方案
java·源码·影像pacs·成品源码·医院影像系统
ShineWinsu3 小时前
对于Redis:string类型的解析
java·c++·redis·分布式·缓存·面试·string
字节跳动的猫3 小时前
LikeShop 积分体系全链路改造:获取规则、订单抵扣与积分商品兑换二开
运维·数据结构
上位机妹子3 小时前
C 语言 数组删除指定元素(快慢指针法)
c语言·数据结构·算法
三8445 小时前
Fastjson 漏洞 · 02 · autoType 机制与 checkAutoType
java·fastjson