虽然 LinkedList 和 ArrayDeque 看起来分属不同数据结构,但实际上它们都实现了 Deque 接口,又因为 Deque 继承自 Queue 接口,所以二者也实现了 Queue 接口。

    在需要 Queue/Deque 结构时,存在以下两种常用写法:

    1. Queue<T> queue1 = new ArrayDeque<>(); // ArrayDeque 不允许添加 null 元素
    2. Queue<T> queue2 = new LinkedList<>();

    在大部分场景下,这两个实现类可以互换,但注意:ArrayDeque 是不允许添加 null 元素的,而 LinkedList 却无此限制。