【问题标题】:Differences in Queue methods队列方法的差异
【发布时间】:2014-09-10 15:03:31
【问题描述】:

为什么Queue 有两种不同的方法分别用于检索元素和删除元素?

检索方法:element()Element peak() 删除方法:Element poll()Element remove()

它们之间有什么区别(第一种情况下的返回类型差异除外)?

【问题讨论】:

标签: java methods data-structures queue fifo


【解决方案1】:

您真的应该阅读 Queue 的 JavaDoc:

remove():

检索并删除此队列的头部。 此方法与 poll 的不同之处仅在于如果此队列为空,它会引发异常。

element():

检索但不删除此队列的头部。 此方法与 peek 的不同之处仅在于如果此队列为空,它会引发异常。

(强调我的。)

【讨论】:

    【解决方案2】:

    根据javadoc:

                   Throws exception     Returns special value
    Insert         add(e)               offer(e)
    Remove         remove()             poll()
    

    这里的特殊值是指:

    返回: 如果元素已添加到此队列,则为 true,否则为 false

    关键是队列可以有预定义的最大长度,如果你尝试在它为空时插入它,你可以使用 add 并获取 Exception 或 offer 并返回 false (或者可能是空的并且你想删除一个元素)

    【讨论】:

      猜你喜欢
      • 2012-12-31
      • 1970-01-01
      • 2020-10-09
      • 2020-07-13
      • 2018-05-27
      • 1970-01-01
      • 2017-10-24
      • 2015-07-04
      • 1970-01-01
      相关资源
      最近更新 更多