参考 https://juejin.cn/post/6844904194223128590

总结

ArrayList 和 LinkedList 的区别、优缺点以及应用场景

区别:

  • ArrayList 是实现了基于动态数组的数据结构,LinkedList 是基于链表结构。
  • 对于随机访问的 get 和 set 方法查询元素,ArrayList 要优于 LinkedList,因为 LinkedList 循环链表寻找元素。
  • 对于新增和删除操作 add 和 remove,LinkedList 比较高效,因为 ArrayList 要移动数据。

优缺点:

  • 对 ArrayList 和 LinkedList 而言,在末尾增加一个元素所花的开销都是固定的。对 ArrayList 而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对 LinkedList 而言,这个开销是 统一的,分配一个内部 Entry 对象。
  • 在 ArrayList 集合中添加或者删除一个元素时,当前的列表移动元素后面所有的元素都会被移动。而 LinkedList 集合中添加或者删除一个元素的开销是固定的。
  • LinkedList 集合不支持 高效的随机随机访问(RandomAccess),因为可能产生二次项的行为。
  • ArrayList 的空间浪费主要体现在在 list 列表的结尾预留一定的容量空间,而 LinkedList 的空间花费则体现在它的每一个元素都需要消耗相当的空间

应用场景:
ArrayList 使用在查询比较多,但是插入和删除比较少的情况,而 LinkedList 用在查询比较少而插入删除比较多的情况

作者:前程有光
链接:https://juejin.cn/post/6844904194223128590
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。