Java ArrayDeque 中的 pop() 和 remove() 之间有 material 区别吗?

Is there a material difference between pop() and remove() in Java ArrayDeque?

remove 和 pop 都从队列的前面删除和 return 一个元素。如果队列为空,它们都会抛出异常。

没有区别。事实上,pop() 和 remove() 方法都调用了 removeFirst。参见 https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/util/ArrayDeque.java

public E remove() {
    return removeFirst();
}

public E pop() {
    return removeFirst();
}

这两种方法都在内部调用了removeFirst(),所以没有区别。 ArrayDeque 可以用作堆栈和 LinkedList,因此我们有不同的接口,具体取决于我们如何使用它(作为堆栈、队列或链表)。它是在 java API 的 1.6 版本中引入的,比 Stack 和 LinkedList 晚得多。根据 oracle 文档

ArrayDeque class is likely to be faster than Stack when used as a stack, and faster than LinkedList when used as a queue.

public E remove() {
    return removeFirst();
}

public E pop() {
    return removeFirst();
}