ArrayList 和 LinkedList 区别

一、数据结构

ArrayList底层是动态数组

1 2 3 4 5

LinkedList底层是双向链表:

 

 

 二、效率比较

2.1 插入效率:

若直接在尾部插入,依次对ArrayList和LinkedList插入一百万条记录,耗费时间如下:

 

 

 若在中间随机位置插入,依次对ArrayList和LinkedList插入十万条记录,耗费时间如下:

 

 综上:

  当直接插入尾部时,ArrayList效率更好,原因为数组扩容的平均时间耗费小于链表的指针操作(每一次插入时数组不一定扩容,而每一次插入时必有指针操作);

  当在中间随机位置插入时,ArrayList的效率则远远下降,因为每一次插入都伴随着大量数据的变化移动,这些移动的时间耗费要远大于指针操作。

2.2 删除效率:

根据插入效率,易得知ArrayList的删除效率低于LinkedList

2.3 查询效率:

ArrayList的底层为数组,因此查询效率为O(1)

LinkedList的底层为链表,最坏的查询效率为O(n)

 

posted @ 2020-10-14 11:25  ChristianL  阅读(102)  评论(0编辑  收藏  举报