2010-08-19 42 views
0

如果我想讓隊列的自定義實現正確到 說我可以選擇任何我想要的順序(而不是FIFO),但我必須始終尊重這樣一個事實,即要移除的元素定位爲「頭」?收集隊列

但是對於插入操作,我沒有義務將元素放在尾部(如進入FIFO)?

回答

3

你是對的。 javadoc明確指出:

隊列通常但不一定以FIFO(先進先出)方式排列元素。例外的是優先級隊列,它根據提供的比較器對元素進行排序,或者元素的自然順序,以及對元素LIFO(後進先出)進行排序的LIFO隊列(或堆棧)。無論使用何種排序,隊列的頭部都是通過調用remove()或poll()來移除的元素。在FIFO隊列中,所有新元素都插入隊列尾部。其他種類的隊列可能會使用不同的放置規則。每個隊列實現都必須指定其排序屬性。

1

你是對的。

Queue documentation甚至指出這明確地(重點煤礦):

隊列一般,但不一定,在FIFO(先入先出)的方式順序的元素。 [...]無論使用何種排序,隊列的頭部都是通過調用remove()poll()將被刪除的元素。