ArrayList
- ArrayList底层是数组,容量到达临界值时(元素个数>=加载因子 * 数组长度),会创建长度为2倍的数组,再将旧数组中的元素复制到新数组中。
- 支持对元素的随机访问,但是插入和删除较慢(因为数组在堆上的地址是固定的,被创建出来的时候我们就知道某个下标元素的地址)
- ArrayList 实现了 RandomAcess 接口,如果类实现了该接口,使用索引遍历比迭代器更快。
LinkedList
- 底层是双向链表
- 增加和删除速度快,随机访问速度慢
- 除继承 AbstractList 外还实现了 Deque 接口,该接口具有队列和栈的性质。
- 相对于ArrayList,内存利用率高。