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
实现是否支持迭代。
我有一个对象队列,我想遍历队列并能够使用这些对象。
我有这个:
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
实现是否支持迭代。