当前位置:网站首页>ArrayList LinkList效率对比
ArrayList LinkList效率对比
2022-08-02 03:28:00 【Encounter84】
由于老师上课的时候讲到了ArrayList LinkList效率不同,于是课下查找资料,并写了一个二者效率对比的小代码。
首先通过查找资料我了解到:1. LinkedList和ArrayList的差别主要来自于Array和LinkedList数据结构的不同。ArrayList是基于数组实现的,LinkedList是基于双链表实现的。另外LinkedList类不仅是List接口的实现类,可以根据索引来随机访问集合中的元素,除此之外,LinkedList还实现了Deque接口,它代表一个双向队列,因此LinkedList可以作为双向队列 ,栈和List集合使用。
2. 因为Array是基于索引的数据结构,它使用索引在数组中搜索和读取数据是很快的,可以直接返回数组中index位置的元素,因此在随机访问集合元素上有较好的性能。Array获取数据的时间复杂度是O(1),但是要插入、删除数据却是开销很大的,因为这需要移动数组中插入位置之后的的所有元素。
3. 相对于ArrayList,LinkedList的随机访问集合元素时性能较差,因为需要在双向列表中找到要index的位置,再返回;但在插入,删除操作是更快的。因为LinkedList不像ArrayList一样,不需要改变数组的大小,也不需要在数组装满的时候要将所有的数据重新装入一个新的数组,这是ArrayList最坏的一种情况,时间复杂度是O(n),而LinkedList中插入或删除的时间复杂度仅为O(1)。ArrayList在插入数据时还需要更新索引。
4. LinkedList需要更多的内存,因为ArrayList的每个索引的位置是实际的数据,而LinkedList中的每个节点中存储的是实际的数据和前后节点的位置。
首先我们测试ArrayList LinkList增加新的内容时效率上的区别。代码如下:

测试结果为:

可以看出array比link快。可能是因为在不修改指针的时候,在往数据末尾新增的时候速度还是比LinkList速度快。
然后测试插入操作:

结果为:

可以看出link确实比array快很多,因为LinkedList不像ArrayList一样,不需要改变数组的大小,也不需要在数组装满的时候要将所有的数据重新装入一个新的数组,这是ArrayList最坏的一种情况,时间复杂度是O(n),而LinkedList中插入或删除的时间复杂度仅为O(1)。
边栏推荐
- electron-builder打包不成功解决方法
- Glide使用及原理分析
- 研发过程中的文档管理与工具
- Laravel随笔记录
- 关于我的项目-实现一个数据库~
- Windows下MySQL数据库报“ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:8000‘ (10061)”错误解决
- 加密数字货币前传:从大卫·乔姆到中本聪
- uniapp发布到微信小程序:分包、删减代码全过程
- 管理node版本的工具volta
- The first time to tear the code by hand, how to solve the problem of full arrangement
猜你喜欢

分布式消息队列平滑迁移技术实战

同时安装VirtualBox和VMware,虚拟机如何上网

Nest 的实现原理?理解了 reflect metadata 就懂了

重点考:金融资产概述、交易性金融资产的概念、交易性金融资产的账务处理(取得、持有。出售)、

C# 常用方法记录

Gradle源码解析:生命周期的三个阶段

svg图片实战:自定义view打造中国地图

记账凭证的种类、记账凭证的基本内容、记账凭证的填制要求、记账凭证的审核

Solve the problem that the 5+APP real machine test cannot access the background (same local area network)

OpenCore 黑苹果安装教程
随机推荐
laravel-admin 线上访问项目,一直重定向到登录页面
Laravel 的关联模型 及其 预加载多个关联 with使用方法
Anaconda报错:An unexpected error has occurred. Conda has prepared the above report 解决办法
C#从入门到精通
张量乘积—实验作业
Glide中图片处理
uniapp | Problems with the use of the official map component
浅谈性能优化:APP的启动流程分析与优化
解决composer安装太慢 更换国内镜像
View的滑动
蓝桥杯:国二选手经验贴 附蓝桥杯历年真题
SGDP(2)——声纳寻宝游戏
英语每日打卡
分布式消息队列平滑迁移技术实战
一分钟get:缓存穿透、缓存击穿、缓存雪崩
面试必备:Android性能分析与优化实战进阶手册
英语每日打卡
Dart-Flutter DateTime日期转换
财产清查概述、 全面清查的情况、局部清查的情况、财产清查的方法、财产清查结果的处理
还原最真实、最全面的一线大厂面试题