一、区别
- ArrayList是基于动态数组的数据结构,LinkedList是基于双向链表的数据结构(有next和previous)
- ArrayList有get()和set()方法,随机访问比较快(O(1)),而LinkedLsit的访问需要从头开始移动指针(O(n))。
- 对新增和删除操作add()和remove操作,LinkedList更加快捷,因为ArrayList需要移动数据。
- 但在某些情况下LinkedList的表现要优于ArrayList,有些算法在LinkedList中实现时效率更高。比方说,利用Collections.reverse方法对列表进行反转时,其性能就要好些。当要对list进行大量的插入和删除操作时,LinkedList也是一个较好的选择。
- 空间浪费:ArrayList浪费空间主要在于在list列表的结尾需要预留一定的容量空间;LinkedList1的空间花费则体现在每一个元素消耗的空间比较大。
二、总结
当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了