Java Queue接口中的方法有什么区别?

时间:2016-03-07 10:22:30

标签: java data-structures

在Java here

中检出队列界面

我对方法定义感到困惑:

  

element()获取但不删除此队列的头部。

就像

  

peek()获取但不移除此队列的头部,或   如果此队列为空,则返回null。

我可以看到,如果队列为空,则peek返回null,但实际上两者都定义为

  

抛出:NoSuchElementException - 如果此队列为空

同样适用于remove()peek();

这背后有任何目标,还是只是一个设计陷阱?

2 个答案:

答案 0 :(得分:3)

让我们用一个应该回答你问题的表来澄清事情:

+---------+---------------------------+------------------------+
| method  |          action           | throws when not found? |
+---------+---------------------------+------------------------+
| peek    | Retrieves, doesn't remove | NO                     |
| remove  | Retrieves, removes        | YES                    |
| element | Retrieves, doesn't remove | YES                    |                 
+---------+---------------------------+------------------------+

当没有找到元素时,有些方法返回null,其他方法抛出异常。

是检索和不删除的方法,其他方法是检索和删除。

答案 1 :(得分:0)

解释在java API中,用于接口队列:here。简而言之,如果队列为空并且peek()返回一个特殊值以指示队列为空,那么element()会发生异常