码迷,mamicode.com
首页 > 其他好文 > 详细

ArrayList 和 LinkedList 区别

时间:2020-10-14 20:29:47      阅读:18      评论:0      收藏:0      [点我收藏+]

标签:body   info   双向   http   mic   位置   大量数据   双向链表   style   

一、数据结构

ArrayList底层是动态数组

1 2 3 4 5

LinkedList底层是双向链表:

技术图片

 

 

 二、效率比较

2.1 插入效率:

若直接在尾部插入,依次对ArrayList和LinkedList插入一百万条记录,耗费时间如下:

技术图片

 

 

 若在中间随机位置插入,依次对ArrayList和LinkedList插入十万条记录,耗费时间如下:

技术图片

 

 综上:

  当直接插入尾部时,ArrayList效率更好,原因为数组扩容的平均时间耗费小于链表的指针操作(每一次插入时数组不一定扩容,而每一次插入时必有指针操作);

  当在中间随机位置插入时,ArrayList的效率则远远下降,因为每一次插入都伴随着大量数据的变化移动,这些移动的时间耗费要远大于指针操作。

2.2 删除效率:

根据插入效率,易得知ArrayList的删除效率低于LinkedList

2.3 查询效率:

ArrayList的底层为数组,因此查询效率为O(1)

LinkedList的底层为链表,最坏的查询效率为O(n)

 

ArrayList 和 LinkedList 区别

标签:body   info   双向   http   mic   位置   大量数据   双向链表   style   

原文地址:https://www.cnblogs.com/christianl/p/13813783.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!