LinkedList .echo()与.peek()的区别

时间:2019-01-24 02:04:52

标签: java-8 linked-list

在oracle Java文档中:https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html

.element()“检索但不删除此列表的头(第一个元素)。”

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

  1. 您是否有理由要使用.element()而不是.peek()
  2. (1)的答案是否定的,为什么一个类需要两个具有相同功能的方法?

2 个答案:

答案 0 :(得分:4)

有4种方法。

  1. 偷看
  2. 元素
  3. 投票
  4. 删除

偷看元素的行为几乎相同,只是有所不同:

如果队列中不包含任何元素,则peek()方法将返回 null

element()方法的行为类似于peek(),因此它再次检索第一个元素的值而不删除它。

但是,如果列表为空,element()会抛出NoSuchElementException

最后,还有两种其他方法轮询删除

poll()方法通过从队列中删除第一个元素的值来检索它。如果列表不包含任何元素,则它将返回null,但不会引发任何异常。

remove()方法的行为与poll()方法相同,因此它将删除列表的第一个元素,如果列表为空,则会抛出NoSuchElementException。

参考: http://www.davismol.net/2014/04/04/java-ocpjp7-difference-between-element-peek-poll-and-remove-methods-of-the-queue-interface/

答案 1 :(得分:3)

该行为在Queue的文档中进行了描述。基本上,如果有错误(元素为空列表),element会引发异常,而peek仅返回一个特殊值(可能为null)。 https://docs.oracle.com/javase/7/docs/api/java/util/Queue.html