檢查出的Java hereJava Queue接口中的方法有什麼區別?
我糊塗了Queue接口的方法定義:
element()獲取,但不移除此隊列的頭。
就像
peek()獲取,但如果此隊列爲空不移除此隊列的空頭部,或 回報。
我可以看到,偷看如果隊列爲空,但兩者實際上是被定義爲
拋出返回null:NoSuchElementException - 如果此隊列爲空
同樣適用於remove()
和peek()
;
這背後有沒有什麼目標,或者只是一個設計陷阱?
檢查出的Java hereJava Queue接口中的方法有什麼區別?
我糊塗了Queue接口的方法定義:
element()獲取,但不移除此隊列的頭。
就像
peek()獲取,但如果此隊列爲空不移除此隊列的空頭部,或 回報。
我可以看到,偷看如果隊列爲空,但兩者實際上是被定義爲
拋出返回null:NoSuchElementException - 如果此隊列爲空
同樣適用於remove()
和peek()
;
這背後有沒有什麼目標,或者只是一個設計陷阱?
讓我們澄清事情應該回答你的問題的表:
+---------+---------------------------+------------------------+
| method | action | throws when not found? |
+---------+---------------------------+------------------------+
| peek | Retrieves, doesn't remove | NO |
| remove | Retrieves, removes | YES |
| element | Retrieves, doesn't remove | YES |
+---------+---------------------------+------------------------+
有返回null
當沒有找到元素,別人拋出異常的方法。
這些方法檢索和不刪除,其他檢索和刪除。
解釋在接口隊列的java API中:here。如果隊列爲空,並且peek()返回一個特殊值來指示隊列爲空,那麼short元素()會拋出異常
我想你的意思是_Same適用於'remove()'和**'poll()' ** _ – Codebender
答案在文檔 - ['element'](https://docs.oracle.com/javase/8/docs/api/java/util/Queue.html#element--):「*檢索,但不刪除這個隊列的頭部**這種方法與peek的區別僅在於,如果這個隊列是空的,它會拋出一個異常**。* 「'peek' **不會拋出一個例外。 – Maroun