首页 > 其他 > 详细

ArrayList和LinkedList的区别

时间:2021-06-10 11:58:05      阅读:30      评论:0      收藏:0      [点我收藏+]

存储结构

ArrayList基于动态数组,在内存中是顺序存储,适合下标访问。

LinkedList基于链表,链式结构存储分散在内存中,适合做数据插入或删除操作。

读写性能

ArrayList是基于数组,所以访问元素是通过下标访问,读取效率高。插入元素分为三种情况;

  • 超容量插入:需要创建一个新数组把原来的数组拷贝过去再插入新的元素。效率低。
  • 中间插入:将插入位置下标以后的每个元素后移一位,腾出地方,再将新元素插入到对应数组位置上。效率低。
  • 尾插:直接将新元素插入到数组尾部空闲位置。

ArrayList使用尾插法配合指定初始容量可以尽可能发挥性能,甚至超越LinkedList(因为LinkedtList有个内部类Node,在每次插入元素时需要创建Node对象)。


LinkedList是基于链表,所以不适合做查询,访问元素需要逐一遍历。遍历LinkedList必须使用迭代器iterator最好不要使用for循环,因为每次for循环get(i)时都有对lsit重新进行遍历,效率极低。但对于插入和删除元素有优势,链表在插入时只需要把前结点的next指针指向新结点,把新结点的next指针指向后结点即可。删除结点时只需把被删除结点的前结点next指向后结点。


总结

读多写少的场景适合用ArrayList;

频繁插入删除元素LinkedList更适合一些。

ArrayList和LinkedList的区别

原文:https://www.cnblogs.com/heyuhao/p/14869318.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!