Java浏览对象队列

时间:2015-03-03 09:11:06

标签: java queue

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

我有这个:

private String format(Queue<MyObject> queue) {

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

}

我不知道我是不是错了,但我找不到一个好办法。 谢谢你的帮助,

3 个答案:

答案 0 :(得分:0)

您可以保留队列中的enqueue()dequeue()个元素,如果您在每次迭代时只执行一次,则可以保证队列的大小不会被取消改变,当你完成后 - 队列将保持原样。

答案 1 :(得分:0)

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

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

迭代列表。

答案 2 :(得分:0)

好吧,根据实际的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实现是否支持迭代。