我创建了一个包含对象的队列,我希望按照它们放入队列的顺序进行迭代(第一个对象放在队列中,第二个对象放在队列中,第三个对象......)
我在网上看到了一种方法,但是我不确定这是否能保证队列中的对象能够以正确的顺序访问?
for(MyObject anObject : queue){
//do someting to anObject...
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助.
Mou*_*ion 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());
}
Run Code Online (Sandbox Code Playgroud)
这取决于Queue您使用哪种实现。
例如,LinkedList保证迭代将以 FIFO(插入)顺序返回元素。这是因为它实现了该Deque接口。
但一般来说其他类型的队列就不一定如此了。
队列的 javadoc指出:
队列通常(但不一定)以 FIFO(先进先出)方式对元素进行排序。其中例外的是优先级队列,它根据提供的比较器或元素的自然顺序对元素进行排序,以及 LIFO 队列(或堆栈),它对元素进行 LIFO(后进先出)排序。
它还补充说:
每个队列实现都必须指定其排序属性。
因此,您只需检查您正在使用的特定队列的 javadoc,就应该找到答案。