如果我想使队列的自定义实现是正确的 说我可以选择我想要的任何订单(不是FIFO),但我必须永远 尊重要删除的元素定位为“头”的事实?
但是对于插入操作,我没有义务将元素放到尾部(就像进入FIFO)?
答案 0 :(得分:3)
你是对的。 javadoc清楚地说明了这一点:
队列通常(但不一定)以FIFO(先进先出)方式对元素进行排序。例外的是优先级队列,它根据提供的比较器对元素进行排序,或者元素的自然排序,以及LIFO队列(或堆栈),它们对元素LIFO(后进先出)进行排序。无论使用什么顺序,队列的头部都是通过调用remove()或poll()来删除的元素。在FIFO队列中,所有新元素都插入队列的尾部。其他类型的队列可能使用不同的放置规则。每个Queue实现都必须指定其排序属性。
答案 1 :(得分:1)
你是对的。
Queue
documentation甚至明确说明了这一点(强调我的):
队列通常但不一定,以FIFO(先进先出)方式对元素进行排序。 [...]无论使用什么顺序,队列的头部都是通过调用
remove()
或poll()
删除的元素。