ArrayList与LinkedList的区别(经典)

61 阅读2分钟

ArrayList与LinkedList的区别(经典)

回答:ArrayList 是基于动态数组,每个元素有着固定的索引,查询的性能为 O(1),修改删除的性能为O(n),适合查询频繁,少修改删除的。LinkedList 是基于双向链表,修改删除的性能为 O(1),查询的性能为 O(1),适合查询少,频繁修改的。


  1. 数据结构不同

ArrayList 是基于动态数组,它可以快速的访问,每个元素有着固定的索引,当需要扩容时,它会创建一个新的数组将旧数组的内容复制过去。

LinkedList是基于双向链表,它适合删除与修改,每个节点存储节点信息,并有指向前后元素的引用。

  1. 性能不同

ArrayList 的查询性能是 O(1),因为每个元素有着固定的索引,删除修改性能为 O(n),因为删除修改时要遍历数组

LinkedList 当删除修改时性能为O(1),因为只需要改一下相应的指针,当查询时性能为O(n),因为需要逐一节点的遍历。

  1. 使用场景不同

ArrayList 适合存储频繁查询,少于删除与修改的数据。 LinkedList 适合存储频繁删除,修改的数据。不适合用于频繁查询。

  1. 内存空间不同

ArrayList 当需要扩容时,它会创建一个新的数组将旧数组的内容复制过去。此时有暂时的提高内存 LinkedList是基于双向链表,每个节点不仅存储节点信息,还存储着指向前后元素的引用。它的内存空间更大。

  1. 扩展性不同

ArratList 是基于动态数组,扩展性差,尤其是面临大量的插入时。LinkedList 是基于双向链表,扩展性高,可以实现动态数据集。

本文由mdnice多平台发布