ArrayList和LinkedList区别

ArrayList 和 LinkedList 都继承自 List,所以都拥有 List 的所有特性。

ArrayList 和 LinkedList 的底层数据结构不一样,ArrayList 是基于动态数组的数据结构,而LinkedList是基于双向链表的数据结构。

对于随机访问,ArrayList 性能优于 LinkedList。因为 ArrayList 底层是数组,所以随机访问时可以快速定位到指定位置的元素,而 LinkedList 必须从链表头或者尾部进行移动指针,效率相对低下。

对于添加和删除操作,LinkedList 性能优于 ArrayList。因为 ArrayList 底层是数据,新增元素时,需要将数据新增位置之后的所有元素集体向后移动一位,删除元素时,需要将数据删除位置之后的所有元素集体向前移动一位。都会涉及到大量元素的移动,如果是操作的最后一个元素,则不需要移动任何元素,效率也是非常高的。而 LinkedList 因为使用的是指针,新增或者删除一个元素需要做的仅仅是修改该位置前后两个元素的指针,几乎没有性能消耗,该操作产生的消耗仅仅是寻址,而寻址相对移动元素的消耗要小很多。

你可能感兴趣的:(ArrayList和LinkedList区别)