ArrayList和LinkedList的区别是什么

一、区别

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

二、总结

当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了

猜你喜欢

转载自blog.csdn.net/Cxf2018/article/details/109323538