2010-08-19 37 views
0

如果我想让队列的自定义实现正确到 说我可以选择任何我想要的顺序(而不是FIFO),但我必须始终尊重这样一个事实,即要移除的元素定位为“头”?收集队列

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

回答

3

你是对的。 javadoc明确指出:

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

1

你是对的。

Queue documentation甚至指出这明确地(重点煤矿):

队列一般,但不一定,在FIFO(先入先出)的方式顺序的元素。 [...]无论使用何种排序,队列的头部都是通过调用remove()poll()将被删除的元素。