ArrayList效率分析与LinkedList性能对比

news/2024/9/25 21:22:25/

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


http://www.ppmy.cn/news/1463105.html

相关文章

华为云部署前端项目发生的事

今天刚买了一个云服务,想着部署一下前端项目: 使用的是 docker nginx 部署 部署方法,在以往的文章中有介绍,如有兴趣可以看看docker 部署; 结果发现部署成功之后,竟然无法访问,从命令来看&…

python使用pandas操作xlsx

python操作xlsx有很多种方法,以前使用其他控件操作,使用这个pandas之后发现更好用。场景,我需要读取xlsx模板,然后根据模板去获取数据,根据用户要求导出指定的xlsx文件。 读取文件 data pd.read_excel(sleepStageAh…

AI 谈“浔川AI翻译机”

在天工AI,天工AI在全网搜索“浔川AI翻译机”。 1 创作助手谈“浔川AI翻译机”: “浔川AI翻译机”是一个利用人工智能技术进行语言翻译的设备或应用程序。它可以将一种语言的文字或口语翻译成另一种语言,以实现不同语言之间的沟通和理解。浔…

15分钟Element-UI快速入门

Element-UI 是一个基于 Vue.js 2.0 的桌面端组件库,它提供了丰富的、可复用的组件,帮助开发者快速构建出美观且功能强大的网页应用。以下是一个 Element-UI 的快速入门指南: 1. 安装 Element-UI 首先,你需要在你的 Vue.js 项目中…

【Linux】如何优雅的检查Linux上的用户登录、关机和重启日志

在诸如Ubuntu、Debian、Linux Mint、Fedora和Red Hat等广受欢迎的Linux发行版中,系统会忠实记录用户的登录、关机、重启以及运行时长信息。这些信息对管理员调查事件、排查故障或汇总用户活动报告极为宝贵。 Linux系统及应用程序日志通常保存在/var/log/目录下&…

「 网络安全常用术语解读 」静态应用安全测试SAST详解

1. 概念 静态应用安全测试 (SAST,Static Application Security Testing) 也称静态分析,是一种测试方法,通过分析源代码来发现应用受到攻击的安全漏洞。SAST 在编译代码之前扫描应用,故又经常被称为白盒测试。 2. SAST 典型应用场…

js禁止使用浏览器的前进后退按钮的方法

效果图: // 替换当前页面的历史记录,使用户不能通过浏览器的前进后退按钮导航 history.replaceState(null, null, location.href);// 监听浏览器的历史记录变化事件 window.onpopstate function(event) {// 再次替换当前页面的历史记录,确保…

简单易懂的 API 集成测试方法

简介:API 集成测试的重要性 API 集成测试是一类测试活动,用于验证 API 是否满足功能性、可靠性、性能和安全性等方面的预期要求。在多 API 协作的应用程序中,这种测试尤为紧要。 在这一阶段,我们不仅审视单个组件,还…