收集队列

时间:2010-08-19 13:50:05

标签: java collections queue

如果我想使队列的自定义实现是正确的 说我可以选择我想要的任何订单(不是FIFO),但我必须永远 尊重要删除的元素定位为“头”的事实?

但是对于插入操作,我没有义务将元素放到尾部(就像进入FIFO)?

2 个答案:

答案 0 :(得分:3)

你是对的。 javadoc清楚地说明了这一点:

  

队列通常(但不一定)以FIFO(先进先出)方式对元素进行排序。例外的是优先级队列,它根据提供的比较器对元素进行排序,或者元素的自然排序,以及LIFO队列(或堆栈),它们对元素LIFO(后进先出)进行排序。无论使用什么顺序,队列的头部都是通过调用remove()或poll()来删除的元素。在FIFO队列中,所有新元素都插入队列的尾部。其他类型的队列可能使用不同的放置规则。每个Queue实现都必须指定其排序属性。

答案 1 :(得分:1)

你是对的。

Queue documentation甚至明确说明了这一点(强调我的):

  

队列通常但不一定,以FIFO(先进先出)方式对元素进行排序。 [...]无论使用什么顺序,队列的头部都是通过调用remove()poll()删除的元素。