ArrayList 和 LinkedList 的区别
ArrayList vs LinkedList
- 因为 Array 是基于索引(index)的数据结构,他使用索引在数组中搜索和读取数据是很快的。Array 获取数据的时间复杂度是
O(1)
,但是要删除数据却是开销很大的,因为这需要重排数组中的所有数据。 - 相对应 ArrayList,LinkedList 插入是更快的。因为 LinkedList 不像 ArrayList 一样,不需要改变数组的大小,也不需要在数组装满的时候要将所有的数据重新装入一个新的数组,这是 ArrayList 最坏的一种情况,时间复杂度是
O(n)
,而 LinkedList 中插入或删除的世界复杂度仅为O(1)
。ArrayList 在插入数据时还需要更新索引(除了插入数组的尾部)。 - 类似于插入数据,删除数据时,LinkedList 也优于 ArrayList。
- LinkedList 需要更多的内存,因为 ArrayList 的每个索引的位置其实是实际的数据,而 LinkedList 中的每个节点中存储的是实际的数据和前后节点的位置(一个 LinkedList 实例存储了两个值:Node
first 和 Node last 分别表示链表的起始节点和尾节点,每个 Node 实例存储了三个值:E item, Node next, Node pre)。
什么场景下更适宜使用 LinkedList,而不是 ArrayList
- 你的应用不会随机访问数据。因为如果你需要 LinkedList 中的第 n 个元素的时候,你需要从第一个元素顺序数到第 n 个数据,然后读取数据。
- 你的应用更多的插入和删除元素,更小的读取数据。因为插入和删除元素不涉及重排数据,所以它要比 ArrayList 要快。
本文来自博客园,作者:疑问号?,转载请注明原文链接:https://www.cnblogs.com/code2code/p/15927603.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)