4

我查看了 java.util.ArrayDeque 类的 remove() 和 removeFirst() 方法,我看到 remove() 调用了 removeFirst() 并且两个方法进行了相同的操作。为什么同一操作有两种方法?

4

2 回答 2

7

这是因为Queue 接口要求实现类具有 removeFirst 函数,而Deque 接口要求实现类具有 removeFirst 函数,而 ArrayDeque 实现了 Deque(双端队列),它是 Queue 接口的最终版本。因此,ArrayDeque 必须实现这两个接口的功能。在我看来,removeFirst 函数是为了清楚起见而存在的,因为 remove 函数的名称会有点模棱两可。

于 2013-06-24T07:33:05.373 回答
5

它们由不同的接口定义。

Queue.remove() 在 Java 5.0 中定义并删除队列的“下一个”元素。

Deque.removefirst() 是在 Java 6 中定义的,它删除双端队列的第一个元素。它类似于 removeLast();

这些在 ArrayDeque 中的实现方式是 next 的 remove() 实际上与 removeFirst() 相同。

如果您想知道使用哪一个,我建议使用您认为最清晰的那个。

于 2013-06-24T07:33:50.913 回答