Java LinkedList – 检索操作之间的差异
LinkedList
以下每组元素检索操作中的不同方法之间是否存在任何差异?
返回null +删除操作: poll()
, pollFirst()
。
返回null +不删除操作: peek()
, peekFirst()
。
抛出exception+删除操作: pop()
, remove()
, removeFirst()
。
抛出exception+不删除操作: element()
, getFirst()
。
插入方法中存在类似的重复。
如果没有这样的差异,我希望在方法的javadoc中提到它(类似于旧的“这就像调用……”)。 它只是一个草率的文件,还是我错过了什么?
它们之间没有区别,它也在文档中列出,但是你必须进行一些递归搜索才能到达那里。
LinkedList
实现了两个接口 – Queue
和Deque
。 Deque
从Queue
延伸出来。
现在, Deque
定义了方法 – Deque#pollFirst()
并inheritance了方法 – Queue#poll()
。
因此, LinkedList
基本上为它实现的两个接口定义了这两个方法。
关于这两种方法之间的相似性,它在Deque
文档中列为:
此接口扩展了Queue接口。 当deque用作队列时,会产生FIFO(先进先出)行为。 元素在双端队列的末尾添加并从头开始删除。 从Queue接口inheritance的方法与Deque方法完全等效,如下表所示:
并且有一个表列出了Queue
类的方法和等效的Deque
方法。 参见Deque#poll()
, Deque#peek()
,例如,他们清楚地列出了等效方法。
你的权利是不好的文件或其他东西。
peek()获取但不删除此列表的头部(第一个元素)。
peekFirst()获取但不移除此列表的第一个元素,如果此列表为空,则返回null。
这就是它所说的,我在Java书中读到,头部是列表中的第一个项目。
它们之间的区别在于它们发布的版本以及LinkedList实现的接口。
基于poll()
和pollFirst()
示例:
LinkedList
与Java 1.2一起发布。
由于1.5 LinkedList实现了Queue接口,因此具有
public E poll()
由于1.6 LinkedList实现了Deque接口,因此具有
public E pollFirst()
编辑: 由于向后兼容性,保持较旧的实现很重要。