ArrayList 和 LinkedList 的区别

ArrayList vs LinkedList

  1. 因为 Array 是基于索引(index)的数据结构,他使用索引在数组中搜索和读取数据是很快的。Array 获取数据的时间复杂度是O(1),但是要删除数据却是开销很大的,因为这需要重排数组中的所有数据。
  2. 相对应 ArrayList,LinkedList 插入是更快的。因为 LinkedList 不像 ArrayList 一样,不需要改变数组的大小,也不需要在数组装满的时候要将所有的数据重新装入一个新的数组,这是 ArrayList 最坏的一种情况,时间复杂度是O(n),而 LinkedList 中插入或删除的世界复杂度仅为O(1)。ArrayList 在插入数据时还需要更新索引(除了插入数组的尾部)。
  3. 类似于插入数据,删除数据时,LinkedList 也优于 ArrayList。
  4. LinkedList 需要更多的内存,因为 ArrayList 的每个索引的位置其实是实际的数据,而 LinkedList 中的每个节点中存储的是实际的数据和前后节点的位置(一个 LinkedList 实例存储了两个值:Node first 和 Node last 分别表示链表的起始节点和尾节点,每个 Node 实例存储了三个值:E item, Node next, Node pre)。

什么场景下更适宜使用 LinkedList,而不是 ArrayList

  1. 你的应用不会随机访问数据。因为如果你需要 LinkedList 中的第 n 个元素的时候,你需要从第一个元素顺序数到第 n 个数据,然后读取数据。
  2. 你的应用更多的插入和删除元素,更小的读取数据。因为插入和删除元素不涉及重排数据,所以它要比 ArrayList 要快。
posted @   疑问号?  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示