ArrayList和LinkedList

    ArrayList和LinkedList都实现了List接口,可是他们的实现原理却不同,其数据结构也不相同。数组

ArrayList是一个大小可变的数组,当有更多的元素添加进ArrayList中时,其大小会动态的增加。数据结构

LinkedList是一个双向链表,链表中的每个元素还保存有其前、后元素的索引。spa

对比

  1. 由于ArrayList是基于索引的数组,每个索引的位置是实际的数据,因此其基于索引在数组中搜索和读取数据要快于LinkedList。
  2. LinkedList在插入或删除数据时,不须要改变数组大小,也不须要在数组被装满时将全部数据从新载入一个新的数组。而ArrayList除了须要改变数组的同时还须要更新索引,因此LinkedList在插入或者删除要快于ArrayList。
  3. LinkedList须要更多的内存,由于ArrayList的每一个节点的位置是实际的数据,而LinkedList中每一个节点的数据除了数据自己还有先后节点的索引。

适用场景

    不少场景下ArrayList更受欢迎:你须要一个不使用同步而基于索引的数据访问时尽可能使用ArrayList,ArrayList很容易使用,可是尽可能指定其大小,并减小数组的改变。索引

而如下场景使用LinkedList更合适:接口

  1. 你的应用不须要随机访问数据,而是从第一个元素依次进行处理时(如队列)。
  2. 你的应用须要更多的使用插入和更新,而不多去读取数据时。
相关文章
相关标签/搜索