ArrayList和LinkedList的区别以及内部数据结构
一、数据结构
ArrayList:动态数组
LinkedList:双向链表
二、不同点
ArrayList:
查询:基于数组,直接通过索引,就可以获取到位置的值。
添加:尾部添加和LinkedList类似,效率差不多,但是可能会扩容,基于数组的复制,开销较大,中间插入的话,涉及到数组的后移,使性能降低。
删除:涉及到数组的前移,使性能降低。
修改:通过索引获取到,可以直接修改。
LinkedList:
查询:基于链表,首先需要判断,索引和数组长度的一半比较,如果小,就从头向尾部遍历,反之,然后进行匹配。
添加:尾部添加和ArrayList类似,效率差不多,如果中间插入,只需要移动Node的pre和next指针,简单高效。
删除:和添加类似,直接移动指针集合。
修改:也是先走查询的步骤,找到后,再进行修改。
三、优先使用
了解了上述知识之后,就知道,查询和修改多的话使用Array List,如果修改和删除多的话,就使用LinkedList。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步