队列方法的差异

时间:2014-09-10 15:03:31

标签: java methods data-structures queue fifo

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

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

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

2 个答案:

答案 0 :(得分:2)

你应该真正阅读Queue的JavaDoc:

remove()

  

检索并删除此队列的头部。 此方法与轮询的区别仅在于,如果此队列为空,则会抛出异常。

element()

  

检索但不删除此队列的头部。 此方法与 peek 的区别仅在于,如果此队列为空,则会抛出异常。

(强调我的。)

答案 1 :(得分:0)

根据javadoc:

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

这里的特殊值意味着:

  

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

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