Java队列接口中的方法之间有什么区别?

Java队列接口中的方法之间有什么区别?,java,data-structures,Java,Data Structures,在Java中检出队列接口 我被方法定义搞糊涂了: element()检索但不删除此队列的头 就像 peek()检索但不删除此队列的头,或 如果此队列为空,则返回null 我可以看到,如果队列为空,peek返回null,但实际上两者都定义为空 抛出:NoTouchElementException-如果此队列为空 这同样适用于remove()和peek() 这背后有什么目标吗?或者这只是一个设计陷阱 让我们用一个表格来澄清问题,这个表格应该能回答您的问题: +---------+----------

在Java中检出队列接口

我被方法定义搞糊涂了:

element()检索但不删除此队列的头

就像

peek()检索但不删除此队列的头,或 如果此队列为空,则返回null

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

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

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


这背后有什么目标吗?或者这只是一个设计陷阱

让我们用一个表格来澄清问题,这个表格应该能回答您的问题:

+---------+---------------------------+------------------------+
|方法|操作|在未找到时抛出|
+---------+---------------------------+------------------------+
|偷看|检索,不删除|否|
|移除|检索、移除|是|
|元素|检索,不删除|是|
+---------+---------------------------+------------------------+
有些方法返回
null
,当找不到元素时,其他方法则抛出异常


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

解释见java API for interface Queue:。简而言之,如果队列为空且peek()返回一个特殊值以指示队列为空,则element()thows exception(异常)

我猜您的意思是同样适用于
remove()
poll()
答案在文档中-:检索但不删除此队列的头。此方法与peek的不同之处在于,如果此队列为空,它将引发异常。“
peek
不会引发异常。答案很好,但更详细的解释在Javadoc中针对队列接口本身。请参阅链接: