Java 浏览对象队列

Java Browse a queue of object

我有一个对象队列,我想遍历队列并能够使用这些对象。

我有这个:

private String format(Queue<MyObject> queue) {

     for (int i = 0; i < queue.size(); i++) {
      //Here i would like to use "MyObject"
     }

}

我不知道我是否错了,但我找不到好的方法。 感谢您的帮助,

您可以保留队列中的 enqueue()dequeue() 元素,如果您在每次迭代中恰好同时执行这两个操作,则可以保证队列的大小不会改变,并且当您完成了 - 队列将保持原样。

您可以将元素包装在列表中:

List<MyObject> list = new ArrayList<>(queue);

并迭代列表。

好吧,根据实际的 Queue 实现,您也许可以使用 Iterator。

例如,对于 PriorityQueue<E>

 * <p>This class and its iterator implement all of the
 * <em>optional</em> methods of the {@link Collection} and {@link
 * Iterator} interfaces.  The Iterator provided in method {@link
 * #iterator()} is <em>not</em> guaranteed to traverse the elements of
 * the priority queue in any particular order. If you need ordered
 * traversal, consider using {@code Arrays.sort(pq.toArray())}.

这意味着增强的 for 循环可以工作:

for (MyObject obj : queue) {

}

但是,并非每个 Queue 实现都能保证实现 iterator()。您应该检查您使用的实际 Queue 实现是否支持迭代。