为什么不使用LinkedList (java)

2025-08-09 23:06:08

教科书上的内容

对于数组,随机元素访问的时间复杂度是 O(1),元素插入操作是 O(n);

对于链表,随机元素访问的时间复杂度是 O(n),元素插入操作是 O(1)。

由此可见在随机插入中应该会使用LinkedList ,但在实际中并不是这样。

在大多数场景中ArrayList 在各种性能下都远胜LinkedList ,可以自行测试。

这里只说明为什么不用。

不能只考虑算法

在LinkedList 中,在实现的时候,我们需要先通过循环获取到那个节点的 Node,然后再执行插入操作。前者也是有开销的,不可能只考虑插入操作本身的代价。

抛开算法层面不谈,由于 CPU 缓存、内存连续性等问题,链表这种数据结构的实现方式对性能并不友好,即使在它最擅长的场景都不一定可以发挥威力。