19

在以下每组元素检索操作中的不同方法之间是否有任何区别LinkedList

返回 null + 删除操作: poll() , pollFirst().

返回 null + 不删除操作: peek() , peekFirst().

抛出异常 + 删除操作: pop() , remove(), removeFirst().

抛出异常 + 不删除操作: element() , getFirst().

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

如果没有这样的区别,我希望在方法的 javadoc 中提到它(类似于古老的“这就像调用......”)。它只是一个草率的文档,还是我遗漏了什么?

4

3 回答 3

15

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

LinkedList实现两个接口 -QueueDeque. 并Deque从 延伸Queue

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

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

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

该接口扩展了 Queue 接口。当双端队列用作队列时,会产生 FIFO(先进先出)行为。元素在双端队列的末尾添加并从开头删除。从 Queue 接口继承的方法与 Deque 方法完全等价,如下表所示:

并且有一个表格列出了Queue类的方法和等效Deque方法。参见Deque#poll()Deque#peek()例如他们清楚地列出了等效方法。

于 2013-02-13T10:38:15.790 回答
1

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

基于poll()and的示例pollFirst()

LinkedList与Java 1.2一起发布。

从 1.5 LinkedList 开始实现了 Queue 接口,它有

public E poll() 

从 1.6 LinkedList 开始实现了 Deque 接口,它有

public E pollFirst()

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

于 2013-02-13T10:33:51.283 回答
0

你的权利是糟糕的文档或其他东西。

peek() 检索但不删除此列表的头部(第一个元素)。

peekFirst() 检索但不删除此列表的第一个元素,如果此列表为空,则返回 null。

这就是它所说的,我在我的 Java 书中读到,头部是列表中的第一项。

于 2014-05-23T01:18:18.723 回答