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

相关推荐
8***B7 小时前
Java自然语言处理
java·开发语言·自然语言处理
小王不爱笑1327 小时前
文件上传(3)
java·spring
赛贝维权申诉7 小时前
30款亚马逊热销儿童玩具,美国外观专利侵权预警!
java·开发语言
拾零吖7 小时前
数据结构与算法
数据结构
幻灭行度8 小时前
docker镜像导入到K8S的containerd中
java·docker·kubernetes
武昌库里写JAVA8 小时前
Java如何快速入门?Java基础_Java入门
java·vue.js·spring boot·后端·sql
那我掉的头发算什么8 小时前
【javaEE】多线程进阶--CAS与原子类
android·java·jvm·java-ee·intellij-idea
SteveCode8 小时前
血赚不亏!Java 17 9 个炸裂特性,程序员看完直呼:太香了!
java
BLOB_1010019 小时前
关于懒人复制idea项目的坑
java·ide·intellij-idea
Moe4889 小时前
Spring Boot 自动配置核心:AutoConfigurationImportSelector 深度解析
java·后端·设计模式