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)
相关推荐
努力也学不会java8 分钟前
【设计模式】抽象工厂模式
java·设计模式·oracle·抽象工厂模式
用户60830892904718 分钟前
集合处理利器,Java中的Stream流API
java·后端
玉衡子19 分钟前
八、MySQL全局优化总结&MySQL8新特性
java·mysql
9号达人22 分钟前
Java 14 新特性详解与实践
java·后端·面试
ytadpole24 分钟前
揭秘XXL-JOB:Bean、GLUE 与脚本模式的底层奥秘
java·后端
计算机毕业设计木哥39 分钟前
计算机毕设选题推荐:基于Java+SpringBoot物品租赁管理系统【源码+文档+调试】
java·vue.js·spring boot·mysql·spark·毕业设计·课程设计
青衫客3639 分钟前
Spring异步编程- 浅谈 Reactor 核心操作符
java·spring·响应式编程
Seven9740 分钟前
剑指offer-30、连续⼦数组的最⼤和
java
BenChuat43 分钟前
Java常见排序算法实现
java·算法·排序算法
熙客1 小时前
SpringCloud概述
java·spring cloud·微服务