我有一个对象队列,我想通过队列并能够使用这些对象。
我有这个:
private String format(Queue<MyObject> queue) {
for (int i = 0; i < queue.size(); i++) {
//Here i would like to use "MyObject"
}
}
我不知道我是不是错了,但我找不到一个好办法。 谢谢你的帮助,
答案 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
实现是否支持迭代。