Linked Lists and Cache Locality
Although linked lists have attractive theoretical insertion and deletion complexity, real-world performance is often limited by poor cache locality, pointer chasing, object allocation overhead, and memory fragmentation. Modern CPUs process contiguous memory very efficiently, so array-backed collections frequently outperform linked lists even for workloads where both have similar asymptotic complexity.
Array-backed structures store elements close together in memory.
Linked-list nodes can be scattered throughout memory.
Pointer chasing creates dependent memory accesses and cache misses.
Object-based linked lists introduce per-node allocation and reference overhead.
Garbage collection can add additional overhead in managed runtimes.
Java and .NET do provide linked-list implementations, but they are specialized rather than being the default collection for most workloads.
Deque or array-backed collections are often better for practical queue and stack workloads.