ArrayLIst和linkedlist的区别

  1. ArrayList 是实现了基于动态数组的数据接口,而LinkedList是基于链表的数据结构。
  2. 对于随机访问的Get和Set,ArrayList的性能要优于LinkedList。因为LinkedList需要移动指针。
  3. 对于添加和删除操作add和remove,LinkedList比ArrayList的效率更高,因为ArrayList是数组,所以在其中进行增删操作时,会对操作点之后所有数据的下标索引造成影响,需要进行数据的移动
  4. ArrayList主要的空间开销在于需要在IList列表预留一定空间;而LinkedList主要空间开销在于需要存储节点信息以及结点指针信息

ArrayList随机访问比LinkedList快的原因:

  1. ArrayList从原理上就是数据结构中的数组,也就是内存中的一片空间,这意味着,当我get(index)的时候,我可以根据数组的首地址+偏移量,直接计算出我想访问的第index元素在内存中的位置;而LinkedList可以简单理解为数据结构中的链表,在内存中开辟的不是一段连续的空间,而是每个元素有一个元素和下一个元素地址这样的内存结构,当get(index)时,只能从首元素开始,依次获取下一个元素的地址。用时间复杂度来表示的话,ArrayList的get(index)时O(1),而LinkedList是O(n)
相关推荐
迦蓝叶7 小时前
JAiRouter v1.0.0 正式发布:企业级 AI 服务网关的开源解决方案
java·运维·人工智能·网关·spring·ai·开源
安卓开发者7 小时前
鸿蒙NEXT应用接入快捷栏:一键直达,提升用户体验
java·harmonyos·ux
yudiandian20147 小时前
03 Eclipse 配置 JDK 环境
java·ide·eclipse
_码力全开_7 小时前
P1005 [NOIP 2007 提高组] 矩阵取数游戏
java·c语言·c++·python·算法·矩阵·go
陈一Tender7 小时前
JavaWeb后端实战(登录认证 & 令牌技术 & 拦截器 & 过滤器)
java·开发语言·spring boot·mysql
Camel卡蒙7 小时前
红黑树详细介绍(五大规则、保持平衡操作、Java实现)
java·开发语言·算法
孤廖8 小时前
吃透 C++ 栈和队列:stack/queue/priority_queue 用法 + 模拟 + STL 标准实现对比
java·开发语言·数据结构·c++·人工智能·深度学习·算法
我命由我123458 小时前
Android 对话框 - 对话框全屏显示(设置 Window 属性、使用自定义样式、继承 DialogFragment 实现、继承 Dialog 实现)
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
Full Stack Developme8 小时前
java.net 包详解
java·python·.net