ArrayList和LinkedList的区别以及内部数据结构

一、数据结构

ArrayList:动态数组

LinkedList:双向链表

二、不同点

ArrayList:

查询:基于数组,直接通过索引,就可以获取到位置的值。

添加:尾部添加和LinkedList类似,效率差不多,但是可能会扩容,基于数组的复制,开销较大,中间插入的话,涉及到数组的后移,使性能降低。

删除:涉及到数组的前移,使性能降低。

修改:通过索引获取到,可以直接修改。

LinkedList:

查询:基于链表,首先需要判断,索引和数组长度的一半比较,如果小,就从头向尾部遍历,反之,然后进行匹配。

添加:尾部添加和ArrayList类似,效率差不多,如果中间插入,只需要移动Node的pre和next指针,简单高效。

删除:和添加类似,直接移动指针集合。

修改:也是先走查询的步骤,找到后,再进行修改。

三、优先使用

了解了上述知识之后,就知道,查询和修改多的话使用Array List,如果修改和删除多的话,就使用LinkedList。

原文地址:https://www.cnblogs.com/mcjhcnblogs/p/14258354.html