Q32: Why is ArrayDeque preferred over java.util.Stack and LinkedList for stacks/queues?

  • java.util.Stack: Legacy class extending Vector. Synchronizes all individual operations, introducing unnecessary lock overhead. Obsolete.
  • LinkedList: Allocates a wrapper node object for every element inserted, causing memory GC overhead.
  • ArrayDeque: Resizable array-backed Queue/Deque. Superior CPU cache locality, no thread lock overhead, zero extra node allocation.
Key Takeaways
  • ArrayDeque is faster and memory-efficient compared to Stack and LinkedList.
Knowledge Check

Why is legacy java.util.Stack considered bad practice in modern Java?