【问题标题】:peek and element in Java's LinkedListJava 的 LinkedList 中的 peek 和 element
【发布时间】:2021-12-12 06:58:41
【问题描述】:

Java 的 LinkedList 中 peek 和 element 有什么区别?

这是 Oracle Java 文档页面对它们的描述,但它们没有解释它们的区别。

公共 E peek()
检索但不删除此列表的头部(第一个元素)。
指定者: 查看接口 Deque
指定者: 查看接口队列
回报: 此列表的头部,如果此列表为空,则返回 null
自从: 1.5

公共 E 元素()
检索但不删除此列表的头部(第一个元素)。 指定者: 接口 Deque
中的元素 指定者: 接口 Queue
中的元素 回报: 此列表的头部
抛出: NoSuchElementException - 如果此列表为空
自从: 1.5

如果我们的列表为空,是否只是一个抛出异常和另一个返回 null 的区别?

【问题讨论】:

  • 是的。那就是peek和element的约定
  • 查看两者的返回/抛出子句,它描述了区别。

标签: java linked-list


【解决方案1】:

查看the documentation of Queue,我们发现下表:

队列方法总结

Throws Exception Returns special value
Insert add(e) offer(e)
Remove remove() poll()
Examine element() peek()

我们可以看到,区别在于element() 可能会抛出NoSuchElementException,而peek() 不会。

【讨论】:

  • 太棒了。谢谢你的回答!
  • OP 引用的 Javadoc 中也指定了它(“返回:此列表的头部,如果此列表为空,则返回 null vs "返回:此列表的头部 抛出:NoSuchElementException - 如果此列表为空"
  • @MarkRotteveel peek 和 peekfirst 怎么样?
  • @potatomotato 是一样的("继承自Queue接口的方法完全等价于下表所示的Deque方法:"Deque )。 peek()Queue 中定义,而peekFirst()Deque 中定义,具有明确的命名对peekFirst()peekLast(),因为这减少了使用它的程序员的精神开销。您可能需要养成仔细阅读 Javadoc 的习惯,因为这些内容通常会被明确提及。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多