引言:这是我在回答集合体系时,被问到的一个问题,也是因为没有深入学习所以回答的并不是很好,所以这两天看了一下,以下是我的一些回答与学习方法。

学习方法:我们学习,系统性的学习肯定是比零散的学习更有效的,针对一个问题,要对它涵盖的内容都进行学习,而不是只针对问题本事,死记硬背,所以我也是从头学起,从最顶级的接口到实现类的源码。

今天我主要讲是针对Arraylist以及LinkedList的区别进行回答,如果你想从头来一遍,这是我学习的文章。https://www.cnblogs.com/CarpenterLee/p/5545987.html

------ArrayList和LinkedList同属于List接口下的实现类。

对于问题的回答,下面是我看完这几篇文章后自己的想法,看完后还是有点闷逼,但多多少少还是能回答一点。

问题1:为什么查询出来的数据保存到Arraylist?竟然你说它速度快,为什么快?

答:  ArrayList它是使用数组的方式 实现的,数组有长度固定,下标识索引。正是因为这两个特性,促使我们保存数据的时候去使用它。查询出来的数据保存进去,这也就意味的两种操作,先放数据后拿数据,我们先说放数据,我们放入数据的时候,通常是通过add,在使用add方法的时候,它会找我们ArrarList里面最后一个数组的位置,然后将数据放进去,在这个过程中,我们不需要对元素进行移动,所以它所消耗的时间是非常少的,拿数据的时候,因为我们指定了get(index)方法的下标索引,通过索引我们就可以找到这个索引下对应的值,将其拿出,这个过程不会有其他时间的开销。相反,如果对数组中的数据进行指定位置插入或者删除,那么数组中的每个下标对应的值就要进行位置的移动,这浪费了一部分时间开销。

问题2:插入、删除数据为啥用LinkedList?

答:LinkedList是如通过双向链表实现的,如果你对单、双向链表还不了解,可以先去学习一下,这样你对插入、删除为啥用LinkedList就很清晰了。在双向链表中,每个元素它都有一个pre和next的指向,也就是指向它的上一个元素是什么,下一个元素是什么,并依次链接下去,在指定插入位置的时候,我们只需要去找这个元素插入的位置,它的上一个元素是什么,下一个元素是什么,加上自身元素总共有三个元素受到影响,修改它们的pre和next指向即可,不像数组,在中间插入一个元素,它后面所有的元素都会受到影响,删除同理。

以上全部是本小白对于这个问题的个人见解。

请大佬对我所描述的错误内容指出,感激不尽。

为什么查询出来的数据保存到Arraylist?插入删除数据为啥用LinkedList?的更多相关文章

  1. 吴裕雄--天生自然python数据清洗与数据可视化:MYSQL、MongoDB数据库连接与查询、爬取天猫连衣裙数据保存到MongoDB

    本博文使用的数据库是MySQL和MongoDB数据库.安装MySQL可以参照我的这篇博文:https://www.cnblogs.com/tszr/p/12112777.html 其中操作Mysql使 ...

  2. Excel文件数据保存到SQL中

    1.获取DataTable /// <summary> /// 查询Excel文件中的数据 /// </summary> /// <param name="st ...

  3. 我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中:

    我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中: C/C++ code   ? 1 int retrieve(int scanno,void* buf); 在 ...

  4. 将爬取的数据保存到mysql中

    为了把数据保存到mysql费了很多周折,早上再来折腾,终于折腾好了 安装数据库 1.pip install pymysql(根据版本来装) 2.创建数据 打开终端 键入mysql -u root -p ...

  5. mysql触发器的使用 想让b字段在更新的时候把旧数据保存到a字段中

    使用mysql希望数据库自动触发一些规则,进行更新数据的时候,就需要用触发器了,比如 将旧数据保存到额外字段中,如何做呢? 在abc表中 name更新的时候 我希望把name的老数据保存到 old_n ...

  6. 1.scrapy爬取的数据保存到es中

    先建立es的mapping,也就是建立在es中建立一个空的Index,代码如下:执行后就会在es建lagou 这个index.     from datetime import datetime fr ...

  7. 1. 处理静态资源 2. controller如何接受请求得参数 3. 如何把controller得数据保存到view. 4. 在controller如何完成重定向到指定路径 5. controller返回json数据

    1. 1. 处理静态资源2. controller如何接受请求得参数3. 如何把controller得数据保存到view.4. 在controller如何完成重定向到指定路径5. controller ...

  8. Redis使用场景一,查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互。

    maven使用: <!--redis jar包--> <dependency> <groupId>redis.clients</groupId> < ...

  9. Python scrapy爬虫数据保存到MySQL数据库

    除将爬取到的信息写入文件中之外,程序也可通过修改 Pipeline 文件将数据保存到数据库中.为了使用数据库来保存爬取到的信息,在 MySQL 的 python 数据库中执行如下 SQL 语句来创建 ...

随机推荐

  1. Linux的组管理和权限管理

    前言 前面的文章中提到:Linux在管理用户权限时,既是面向用户的,又是面向组的,通过管理用户的权限规定了其对所拥有的文件的权限(读.改.执行),通过管理组的权限而规定了该组中用户对于某一文件的权限. ...

  2. 使用vue-cli搭建项目开发环境

    一.前言 本篇文章主要是使用vue-cli搭建一个简单的vue项目,这个项目在其他文章中作为代码演示的环境会一直使用. 注意:默认大家的电脑已经安装nodejs,所以这里不总结nodejs的安装. 二 ...

  3. Weblogic 12c 的 Apache HTTP Server 整合插件(Plug-In)下载地址

    资料来源:到哪里下载Weblogic 12c 的Plug-In 为 Apache HTTP Server 摘录如下: 最新的Weblogic 12c不再为 Apache HTTP Server提供缺省 ...

  4. 暑假CV-QKD的相关论文单词集(第一弹)

    CV-QKD  连续变量-量子秘钥分发 Quadrature  正交 Photon     光子 Coherent    连续的,连贯的 Reconciliation   调解 Cryptograph ...

  5. 一个ip, 两个域名, 两个ssl, 访问多个不同的项目

    在前面一篇中说过, 入了好几个坑. 后来使用了nginx+tomcat配置的方式. 终于成功了. 因为头一次使用nginx, 不知道具体怎么操作, 于是我在操作的时候, 按照以下几个步骤执行的: 导航 ...

  6. 力扣(LeetCode)字符串中的第一个唯一字符 个人题解

    给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 案例: s = "leetcode" 返回 0. s = "loveleetcod ...

  7. IDEA+SpringBoot+Mybatis+maven分布式项目框架的搭建

    参考文章:https://blog.csdn.net/qq_34410726/article/details/98214992 一.maven分布式工程的基本架构 demo  #父工程模块,主要用来定 ...

  8. 扛把子组20191017-5 alpha week 2/2 Scrum立会报告+燃尽图 04

    此作业要求参见[https://edu.cnblogs.com/campus/nenu/2019fall/homework/9801] 一.小组情况 队名:扛把子 组长:迟俊文 组员:宋晓丽 梁梦瑶 ...

  9. Java中的继承、封装、多态的理解

    Java中的继承.封装.多态 继承的理解: 1.继承是面向对象的三大特征之一,也是实现代码复用的重要手段.Java的继承具有单继承的特点,每个子类只有一个直接父类. 2.Java的继承通过extend ...

  10. 宋宝华:关于ARM Linux原子操作的实现

    本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 竞态无所不在 首先我们要理解竞态(ra ...