我有一个 PriorityBlockingQueue<Shirts>
除了其他自定义条件外,它还使用 FIFO(先进先出)比较器。在服从优先级的同时,我只需要拉出绿色衬衫。我了解 Queue 的目标是它们用于“从顶部取出”的项目。 iterator()
不服从命令,所以我不能使用它。我应该完全使用不同的队列吗?我如何遍历这些项目。
最佳答案
PriorityQueue.iterator() 不遵守顺序,但检索操作 poll、remove、peek 和 element 访问队列头部的元素。因此,考虑到 PriorityBlockingQueue 不能有 null 元素,您可以通过这种方式按顺序迭代元素
PriorityBlockingQueue<Shirts> q = ...
for (Shirts shirts; (shirts = q.poll()) != null; ) {
...
}
另一种方式
Shirts[] a = q.toArray(new Shirts[q.size()]);
Arrays.sort(a);
现在你可以双向迭代
关于java - 如何按顺序迭代PriorityBlockingQueue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18659713/