ArrayList和LinkedList区别

  • 时间复杂度
    • 查询
    • 插入和删除
  • 空间复杂度
  • 总结

时间复杂度

查询

对于存储相同列表的ArrayList和LinkedList来说,ArrayList内部的实现是基于对象数组,而LinkedList是基于指针链表,ArrayList的查询是基于二分查找算法,LinkedList是不支持快速随机访问。所以,查询,ArrayList的速度是快鱼LinkedList的

插入和删除

当有元素插入和删除ArrayList时,该元素其后的元素都会进行移动,这就会造成移动会复制元素上的大量开销。相反的是,将元素插入或删除LinkedList只是简单的将该元素前后元素的next和previous节点进行修改即可

空间复杂度

LinkedList内部类是一个元素对象和上下节点,而ArrayList扩容是根据公式:新容量 = (旧容量*3 )/2 + 1,也就是每次容量大约会增加50%,如果用不完这50%,就会浪费很多空间。
所以,ArrayList在空间浪费上是大于LinkedList的。

总结

ArrayList是线性表(数组)
get()直接读取几个下标,时间复杂度O(1)
add(index,E)添加元素,其后元素需要移动,复杂度O(n)
remove()删除元素,其后元素逐个移动,复杂度O(n)

LinkedList是链表
get()获取第几个元素,依次遍历,复杂度O(n)
add(index,E)添加元素,修改前后元素的next和previous节点,复杂度O(1)
remove()删除元素,直接指向指针操作,复杂度O(1)

ArrayList和LinkedList时间、空间复杂度对比相关推荐

  1. 某团技术拷问:ArrayList 和 LinkedList 哪个更占空间?

    HR力荐了一个工作 4 年,目前年薪 40W+ 的候选人. 看他简历,从 JVM.MySQL.Redis,再到悲观锁.乐观锁一个都不缺,并发编程.分布式也都接触过,像是个实力派! 着急用人,就赶紧叫人 ...

  2. 【java学习】Arraylist和LinkedList使用场景与性能对比

    介绍 ArrayList LinkedList 使用场景对比 两个实例: 二分查找 插入元素 总结 介绍 List 的三个子类的特点: ArrayList 底层结构是数组,底层查询快,增删慢. Lin ...

  3. Java中ArrayList和LinkedList区别 时间复杂度 与空间复杂度

    一般大家都知道ArrayList和LinkedList的大致区别:       1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构.       2.对于随机 ...

  4. vector 插入_Java学习五分钟系列:对比Vector、ArrayList、LinkedList

    Java学习五分钟系列,目的是为让大家在短时间内搞清楚一项技术的概念.优缺点和适用场景,想要深入的了解,还需要投入更多的时间. Java的集合类,值得我们深入的学习,建议大家有时间的话,可以阅读一下源 ...

  5. 请你简单介绍一下ArrayList和LinkedList的区别及大数据量情况下的插入效率对比

    请你简单介绍一下ArrayList和LinkedList的区别 ArrayList采用数组实现的,查找元素的效率比LinkedList高. LinkedList采用双线链表实现,插入和删除的效率比Ar ...

  6. [小技巧] ArrayList与LinkedList对比与常见方法

    ArrayList与LinkedList对比 ArrayList是顺序结构,所以定位很快,但插入,删除数据慢. LinkedList 是链表结构,定位慢,但插入,删除数据快. ArrayList与Li ...

  7. Java 对比Vector、ArrayList、LinkedList

    ①引言 在日常生活中能高效的管理和操作数据是非常重要的.Java提供了强大的集合框架,大大提高了开发者的生产力,今天就了解一下有关集合框架方面的问题. Vector.ArrayList.LinkedL ...

  8. 比较ArrayList、LinkedList、Vector

    翻译人员: 铁锚 翻译时间: 2013年12月2日 原文链接: ArrayList vs. LinkedList vs. Vector 1. List概述 List,就如图名字所示一样,是元素的有序列 ...

  9. java arraylist和list_Java中ArrayList和LinkedList区别

    原文链接:http://pengcqu.iteye.com/blog/502676 一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据 ...

最新文章

  1. 如何克服实施OKR的阻力?
  2. react-native 开发小结(Android)
  3. 全球 IPv4 地址耗尽,IPv6 来了!
  4. Sunisoft.IrisSkin.SkinEngine 设置winform皮肤
  5. PAT-1127. ZigZagging on a Tree (30)
  6. 如何避免 Go 命令行执行产生“孤儿”进程?
  7. argo 现水下永动机器人_水下永动机器人现身
  8. 几种常用 css3 选择器解释
  9. matlab filter函数_简单使用matlab滤波器
  10. fusion360界面字体模糊处理方法
  11. 【转】 Linux那些事儿之我是U盘(16)冰冻三尺非一日之寒
  12. 2020-10-31
  13. Python并发编程系列之多线程
  14. 职称计算机的考题整理分享,是2011年的,支持自学成才的人
  15. 什么是package-info.java
  16. 2023年网络安全专家都在用的学习资料笔记,收藏这个就够了!
  17. vscode中 用svn插件下拉代码
  18. 技术人具备“结构化思维”意味着什么?
  19. java实现简单数独游戏
  20. 【转】Go语言和Windows服务

热门文章

  1. 软件工程毕业设计选题java_2021年计算机专业Java相关毕业设计如何选题更容易通过...
  2. 《中文文本信息抽取模型与方法研究》5:基于论元结构的事件要素及其角色识别
  3. 使用HTML的canvas,给表格画斜线
  4. RationalDMIS 2020 叶片检测 -快速定义叶片截面线方法
  5. Html5和CSS3开发指南学习
  6. USB转TTL串口板使用问题
  7. 推荐,Java Emoji Converter(Emoji表情转换工具)
  8. Unity3d游戏引擎Windy系列教程:常见组件扫盲讲解引入unity所需的脚本语言基础
  9. 2022烷基化工艺操作证考试题库及模拟考试
  10. <郝斌C语言自学教程>