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