在Java here
中检出队列界面我对方法定义感到困惑:
element()获取但不删除此队列的头部。
就像
peek()获取但不移除此队列的头部,或 如果此队列为空,则返回null。
我可以看到,如果队列为空,则peek返回null,但实际上两者都定义为
抛出:NoSuchElementException - 如果此队列为空
同样适用于remove()
和peek()
;
这背后有任何目标,还是只是一个设计陷阱?
答案 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()会发生异常