image

编辑人: 独留清风醉

calendar2025-06-24

message3

visits1799

请问ArrayList 和 LinkedList 的区别?

分析&回答

ArrayList 底层基于动态数组实现,LinkedList 底层基于链表实现。

查询角度

ArrayList 通过 index 直接定位到数组对应位置的节点,而 LinkedList需要从头结点或尾节点开始遍历,直到寻找到目标节点,因此在效率上 ArrayList 优于 LinkedList。

插入、删除角度

  • 随机插入和删除
    ArrayList 需要移动目标节点后面的所有节点,而 LinkedList 只需修改目标节点前后节点的 next 或 prev 属性即可,因此在效率上 LinkedList 优于 ArrayList。
  • 顺序插入和删除
    由于 ArrayList 不需要修改上一个节点,且效率微胜 LinkedList 。又因为大部分情况下我们的使用都是顺序插入,所以在实际生产中更多使用 ArrayList。

反思&扩展

  • 数组是顺序存储结构,链表是链式存储结构
  • 数组是把所有元素按顺序进行存储,而链表则是通过指针连接元素与元素
  • 数组要分配固定大小的连续空间
  • ArrayList是动态数组,默认容量是10,每次扩容都为原来容量的1.5倍,扩容时将所有数据Copy到新对象。

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:请问ArrayList 和 LinkedList 的区别?

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share