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

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

今天我主要讲是针对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. 伪紫题p5194 天平(dfs剪枝)

    这题作为一个紫题实在是过分了吧...绿的了不起了.—————————————————————————— 看题第一眼,01背包无误.2min打好一交全屏紫色(所以这就是这题是紫色的原因233?) re原 ...

  2. st表复习笔记

    st表,一种高效的区间最值查询(RMQ)算法.本质其实是一个动态规划. 其实吧,对于看过线性dp的人来说应该不难理解,只是处理有些麻烦.但是本土狗因为-1的问题居然改了许久... 用两个2^i的区间把 ...

  3. Docker从入门到掉坑(二):基于Docker构建SpringBoot微服务

    本篇为Docker从入门到掉坑第二篇:基于Docker构建SpringBoot微服务,没有看过上一篇的最好读过 Docker 从入门到掉坑 之后,阅读本篇. 在之前的文章里面介绍了如何基于docker ...

  4. node真的是单线程模式吗

    提到node,我们就可以立刻想到单线程.异步IO.事件驱动等字眼.首先要明确的是node真的是单线程的吗,如果是单线程的,那么异步IO,以及定时事件(setTimeout.setInterval等)又 ...

  5. Spring Cloud gateway 七 Sentinel 注解方式使用

    Sentinel 注解支持 @SentinelResource 用于定义资源,并提供可选的异常处理和 fallback 配置项. @SentinelResource 注解包含以下属性: value:资 ...

  6. MD5 加盐加密

    一.概述 MD5(Message Digest  Algorithm 5),是一种散列算法,是不可逆的,即通过md5加密之后没办法得到原文,没有解密算法. 在一般的项目中都会有登录注册功能,最简单的, ...

  7. java编程思想第四版第三章要点总结

    1. 静态导入 使用import static方式导入一个类的所有方法. 例如: import static net.mindview.util.Print.*; 首先定义了一个Print类,里面有静 ...

  8. Java编程思想——第14章 类型信息(二)反射

    六.反射:运行时的类信息 我们已经知道了,在编译时,编译器必须知道所有要通过RTTI来处理的类.而反射提供了一种机制——用来检查可用的方法,并返回方法名.区别就在于RTTI是处理已知类的,而反射用于处 ...

  9. 前端与算法 leetcode 8. 字符串转换整数 (atoi)

    目录 # 前端与算法 leetcode 8. 字符串转换整数 (atoi) 题目描述 概要 提示 解析 解法一:正则 解法二:api 解法二:手搓一个api 算法 传入测试用例的运行结果 执行结果 G ...

  10. 记录工作遇到的死锁问题(Lock wait timeout exceeded; try restarting transaction)

    1.问题背景 刚来新公司不久,对业务还不太熟悉,所以领导先安排我维护原有系统.大概介绍下项目背景,项目分为核心业务部分在项目A中,与第三方交互的业务在项目B中,前端发起请求调用A项目接口,并在A项目中 ...