栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ArrayList和LinkedList区别是什么

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ArrayList和LinkedList区别是什么

        这个问题基础面试很常见,今天结合源码跟大家一起学习下这个问题,希望能帮助到需要的小伙伴。(涉及代码均是JDK1.8版本下的源码)

       首先看下ArrayList。

  1. ArrayList继承了List接口,
  2. 底层是数组实现,所以查询指定下标的数据时,效率很好

      3.  添加数据时,默认是直接插入到最后,效率也很快,

     4. 如果插入到指定位置,效率就要跟插入位置之后的数据量有关了,因为涉及到数据的平移复制,其实直接插入数据也不一定效率就高,

此外还要看是否需要扩容,如果需要扩容,也会降低操作效率

     接下来再看LinkedList。

  1. LinkedList继承了List和Deque接口,
  2. 由于实现了Deque接口,所以可以作为双端队列
  3. 底层是链表结构,遍历越靠后的数据花费时间越长,但是,由于底层实现了getFirst()和getLast(),所以链表的头结点和尾节点是一直有记录的,获取链表的第一个元素和最后一个元素可直接调用相应的方法,从而提高获取效率。

   4. LinkedList的新增元素默认也是插入到链表尾部,代码如下:

所以默认插入的效率还是很高的。其实LinkedList指定位置插入元素也很快,因为链表的插入操作会先判断是否是尾节点,是就直接插入到尾部,如果不是就遍历到指定位置然后插入元素即可,时间多花费在遍历上

所以不能单纯的说谁的效率更高,谁更适合增删改,谁更适合查询,要结合具体情况而定。只能说多数情况下,ArrayList更合适随机查找,LinkedList更适合频繁的删除和新增操作,至于时间复杂度每种操作和情况下各有不同。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1024136.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号