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

相关推荐
一分之二~1 小时前
回溯算法--递增子序列
开发语言·数据结构·算法·leetcode
艾莉丝努力练剑1 小时前
【Python库和代码案例:第一课】Python 标准库与第三方库实战指南:从日期处理到 Excel 操作
java·服务器·开发语言·人工智能·python·pycharm·pip
YDS8291 小时前
SpringCloud —— 配置管理
java·spring·spring cloud
乂爻yiyao1 小时前
Java 的云原生困局与破局
java·开发语言·云原生
C182981825751 小时前
traceId 传递-MQ
java
罗湖老棍子1 小时前
【例3-3】医院设置(信息学奥赛一本通- P1338)
数据结构·c++·算法·
小鸡脚来咯1 小时前
java web后端开发流程
java·开发语言·git
北友舰长1 小时前
基于Springboot+thymeleaf快递管理系统的设计与实现【Java毕业设计·安装调试·代码讲解】
java·spring boot·mysql·校园管理·快递·快递系统
我爱烤冷面1 小时前
kotlin项目实现Java doc的方案:使用Dokka
java·开发语言·kotlin·dokka
jian110581 小时前
android java转kotlin,kotlin转java
android·java·kotlin