通过顺序迭代对象队列

时间:2013-06-03 09:20:11

标签: java object queue

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

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

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

感谢您的帮助。

3 个答案:

答案 0 :(得分:10)

将您的队列实现为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());
}

答案 1 :(得分:3)

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

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

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

javadoc for Queue州:

  

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

它还补充说:

  

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

所以你只需要检查你正在使用的特定队列的javadoc,你就应该找到你的答案。

答案 2 :(得分:0)

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