16

我创建了一个包含对象的队列,我想按照它们在队列中放置的顺序对其进行迭代(第一个对象放置在队列中,第二个对象放置在队列中,第三个对象......)

我在网上看到了一种这样做的方法,但我不确定这是否能保证队列中的对象将以正确的顺序被访问?

for(MyObject anObject : queue){
    //do someting to anObject...

感谢您的帮助。

4

3 回答 3

14

将您的队列实现为 LinkedList。然后,您可以按插入的顺序遍历对象。您必须声明要插入队列的对象的类型,这样您就不会收到任何错误。您可以将其保留为对象并将其指定为对象队列,然后您的上述代码将起作用。见下文。

Queue<Object> queue = new LinkedList<Object>();
// add your objects here
// EX: queue.add(new MyObject)

for(Object item : queue){
    System.out.println(item.toString());
}
于 2016-01-11T03:59:04.800 回答
4

这取决于Queue您使用的实现。

例如LinkedList,保证迭代将以 FIFO(插入)顺序返回元素。这是因为它实现了Deque接口

但一般来说,其他类型的队列不一定如此。

队列的javadoc状态:

队列通常但不一定以 FIFO(先进先出)方式对元素进行排序。例外情况包括优先级队列,它根据提供的比较器或元素的自然顺序对元素进行排序,以及对元素进行排序的 LIFO 队列(或堆栈) LIFO(后进先出)。

它还补充说:

每个 Queue 实现都必须指定其排序属性。

因此,您只需检查您正在使用的特定队列的 javadoc,您应该会找到答案。

于 2013-06-03T09:23:01.263 回答
0

我认为在这种情况下使用 ArrayList 更好。请尝试一下。为什么你只想使用队列?

于 2013-06-03T09:29:15.827 回答