2016-03-07 27 views
1

檢查出的Java hereJava Queue接口中的方法有什麼區別?

我糊塗了Queue接口的方法定義:

element()獲取,但不移除此隊列的頭。

就像

peek()獲取,但如果此隊列爲空不移除此隊列的空頭部,或 回報。

我可以看到,偷看如果隊列爲空,但兩者實際上是被定義爲

拋出返回null:NoSuchElementException - 如果此隊列爲空

同樣適用於remove()peek();

這背後有沒有什麼目標,或者只是一個設計陷阱?

+0

我想你的意思是_Same適用於'remove()'和**'poll()' ** _ – Codebender

+3

答案在文檔 - ['element'](https://docs.oracle.com/javase/8/docs/api/java/util/Queue.html#element--):「*檢索,但不刪除這個隊列的頭部**這種方法與peek的區別僅在於,如果這個隊列是空的,它會拋出一個異常**。* 「'peek' **不會拋出一個例外。 – Maroun

回答

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

是的,它現在有點合理:D – Adelin

+0

好的答案,但更詳細的解釋是在隊列接口本身的Javadoc。請參閱鏈接:https://docs.oracle.com/javase/8/docs/api/java/util/Queue.html –

+0

@MichaelGantman當然,OP已經熟悉這些文檔。 – Maroun

0

解釋在接口隊列的java API中:here。如果隊列爲空,並且peek()返回一個特殊值來指示隊列爲空,那麼short元素()會拋出異常

相關問題