ArrayList 和 LinkedList 之间应该怎么选择？
任何时候你都应当用ArrayList。

理论上插入删除LinkedList比ArrayList快，但实际上慢，原因：

现代CPU极度依赖缓存，有些BIOS可以关闭二级缓存，可以关了试试，速度差10～100倍；

现代内存管理是以4K/8K/16K的页为单位，一个页要么在缓存里，要么先调入缓存再读写；

数组前后数据99%的概率命中缓存，而LinkedList随着程序运行分配到不同的页会导致性能急剧下降；

移动数组可以走DMA，即移动一块连续的内存数据效率远远高于多次移动不同的数据；

实际测试ArrayList增删比LinkedList要快。

LinkedList只能作为Queue / Deque使用，不推荐作为List使用。