ArrayList 和 LinkedList的区别

198 阅读1分钟

ArrayList

  • ArrayList底层是数组,容量到达临界值时(元素个数>=加载因子 * 数组长度),会创建长度为2倍的数组,再将旧数组中的元素复制到新数组中。
  • 支持对元素的随机访问,但是插入和删除较慢(因为数组在堆上的地址是固定的,被创建出来的时候我们就知道某个下标元素的地址)
  • ArrayList 实现了 RandomAcess 接口,如果类实现了该接口,使用索引遍历比迭代器更快。

LinkedList

  • 底层是双向链表
  • 增加和删除速度快,随机访问速度慢
  • 除继承 AbstractList 外还实现了 Deque 接口,该接口具有队列和栈的性质。
  • 相对于ArrayList,内存利用率高。