Java LinkedList - 检索操作之间的差异

2022-09-02 13:45:18

以下每组元素检索操作中的不同方法之间是否存在任何差异?LinkedList

返回空值 + 删除操作:、 。poll()pollFirst()

返回 null + 不删除操作:、 。peek()peekFirst()

引发异常 + 删除操作:、 、 。pop()remove()removeFirst()

引发异常 + 不删除操作:、 。element()getFirst()

插入方法中也存在类似的重复。

如果没有这样的差异,我希望在方法的javadoc中提到它(类似于旧的“这完全像调用...”)。它只是一个草率的文档,还是我错过了什么?


答案 1

它们之间没有区别,它也列在文档中,但是您必须进行一些递归搜索才能到达那里。

LinkedList实现了两个接口 - QueueDeque。并延伸自 .DequeQueue

现在,已经定义了方法 - Deque#pollFirst() 并继承了方法 - Queue#poll()Deque

因此,基本上已经为它实现的两个接口定义了这两个方法。LinkedList

关于这两种方法之间的相似性,它在Deque的文档中被列为:

此接口扩展了队列接口。当一个 deque 用作队列时,将产生 FIFO(先进先出)行为。元素在 deque 的末尾添加,并从开头删除。从队列接口继承的方法完全等效于 Deque 方法,如下表所示:

还有一个表列出了类的方法和等效的方法。请参阅Deque#poll()Deque#peek()例如,他们清楚地列出了等效的方法。QueueDeque


答案 2

它们之间的区别在于它们发布的版本和LinkedList实现的接口。

基于 poll()pollFirst() 的示例

LinkedListJava 1.2 一起发布。

自 1.5 起LinkedList 实现了 Queue 接口,该接口具有以下特点:

public E poll() 

自 1.6 起LinkedList实现了Deque接口,它具有

public E pollFirst()

编辑:由于向后兼容性,保留较旧的实现非常重要。


推荐