LinkedList集合中的元素也是有序的,有索引,为什么和ArrayList相比查找比较慢,增删快呢?

我们打个比方:LinkedList和ArrayList中都装了10个人。

在ArrayList集合中的10个人是这样的:Arraylist中本身就有标号0,,,2,3,,4…。每个人都站在一个标号上,比如我要找4号,我说4号出来,站在4号的人,一看自己的位置标号,就知道叫的是他,他就直接出来了,所以比较快。如果我要在4号位置加个人,那么从4号开始后面的的人都要往后移,把4号位置腾出来,所以比较麻烦。

而在LinkedList集合中的每个人都是随便站的。但是他们中的每个人都认识一个人。并且每两个认识的人之间都有一个链子把他们连接起来。所有人都连接完之后,顺着链子看,就也有一个顺序,每个人就也有一个序号,但是这个序号并没有标出来。也就是说相当于有一个隐式的序号。所以:比如我要叫4号出来的时候,他们并不知道自己到底谁是4号,所以就要顺着链子从头开始查一下,查到4号是谁了,4号就出来了。也就是说,每次要找n号位置的人时,都要从头查一遍,看谁是n号。所以查找比较麻烦。至于增删效率高,就很容易理解了。

其实就是一点,就是相当于说:**ArrayList集合中的索引是标示出来的,而LinkedList集合中的索引是隐式的,**看不见的。这样就很容易理解,为什么LinkedList集合中也有索引为什么查找效率比Arraylist低的原因了。

ArrayList和LinkedList的索引问题相关推荐

  1. java什么时候用list_Java快问快答:用 ArrayList 还是 LinkedList?

    问题: 通常我会这么定义列表: List names = new ArrayList<>() names类型使用List接口,那么具体实现该如何选择. 什么时候应该用LinkedList替 ...

  2. 当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮

    前言 今天介绍一下Java的两个集合类,ArrayList和LinkedList,这两个集合的知识点几乎可以说面试必问的. 对于这两个集合类,相信大家都不陌生,ArrayList可以说是日常开发中用的 ...

  3. 面试官:兄弟,说说 ArrayList 和 LinkedList 有什么区别

    作者 | 沉默王二 来源 | 沉默王二(ID:cmower) ArrayList 和 LinkedList 有什么区别,是面试官非常喜欢问的一个问题.可能大部分小伙伴和我一样,能回答出"Ar ...

  4. 深入理解java中的ArrayList和LinkedList

    杂谈最基本数据结构--"线性表": 表结构是一种最基本的数据结构,最常见的实现是数组,几乎在每个程序每一种开发语言中都提供了数组这个顺序存储的线性表结构实现. 什么是线性表? 由0 ...

  5. ArrayList和LinkedList的add(E)性能秘密

    2019独角兽企业重金招聘Python工程师标准>>> 两者末尾添加数据的性能如何? 我将通过程序和源码来解析. 程序解析 这里我将比较两者添加数据所消耗的时间. ArrayList ...

  6. java中ArrayList与LinkedList的区别

    一.背景 面试题中经常会被面试官问到ArrayList和LinkedList的区别,下面从源码角度来对他们进行一下简单的阐述,相信会对它们有一个更全面深入的了解. 首先,ArrayList和Linke ...

  7. ArrayList与LinkedList的比较

    ArrayList 继承AbstractList<E>,实现List.Cloneable和Serializable接口 LinkedList继承AbstractSequentialList ...

  8. ArrayList、LinkedList、 Vector、Map 用法比较

    ArrayList和Vector是采用数组方式存储数据,此数组元素总数大于实际存储的数据个数以便增加和插入元素,二者都允许直接序号索引元素,但是插入数据要移动数组元素等内存操作,所以它们索引数据快.插 ...

  9. 用 ArrayList 还是 LinkedList?

    本文旨在为 Java 开发这择合适的顺序数据结构提供指导. ArrayList 和 LinkedList 是 Java 集合框架中用来存储对象引用列表的两个类.ArrayList 和 LinkedLi ...

最新文章

  1. 我的网站搭建 (第十七天) celery 定时刷新缓存
  2. python笔试题奥特曼打怪兽_python笔试做错的题目
  3. Linux系统密码忘记修改方法
  4. windows下live555+rtsp+ffmpeg媒体源,nginx+rtmp转发服务器,vlc播放rtmp媒体流
  5. springboot 引入jdbc驱动_Spring Boot:企业常用的 Starter以及实现
  6. VTK:InfoVis之SCurveSpline
  7. JavaOne 2012:在JVM上诊断应用程序
  8. 函数宏定义 与函数自定义
  9. mysql grant命令详解_mysql grant命令详解 设置mysql远程连接
  10. 使用手持式频谱分析仪进行TDD信号分析
  11. 创建pytorch虚拟环境的版本问题
  12. 传智播客JavaWeb听课总结
  13. 1038: 绝对值最大
  14. 使用标准输出流(system.out)和打印流 (PrintWriter)来读取txt文件
  15. 百度网盘8种批量修改文件名称重命名的方法
  16. 计算机无法用630打印机,爱普生LQ-630型针式打印机突然打印几行乱码,就不工作了...
  17. AE制作文字模糊特效
  18. java项目word转换成pdf并且去除水印
  19. php上传后门,PHP图片后门藏匿攻略
  20. 概率初步(1 Juin, 2019)

热门文章

  1. nginx虚拟主机概念和类型介绍
  2. VC使用CRT调试功能检测内存泄漏(转载)
  3. Unix环境高级编程—进程关系
  4. Android:如何使用addJavaScriptInterface
  5. 如何在Exchange中处理不能发送的信息?
  6. 什么是BGP,BGP的优点有哪些?-Vecloud
  7. SDN控制器的资源收集过程—Vecloud
  8. Tomcat项目部署
  9. 如何查看某oracle实例下面定义了多少jobs
  10. 洛谷 P1070 道路游戏(noip 2009 普及组 第四题)