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