我有一个 PriorityBlockingQueue<Shirts> ,除了其他自定义条件外,它还使用FIFO(先进先出)比较器。在遵循优先顺序的同时,我只需要抽出绿色衬衫。我了解“队列”的目标是将它们用于“摘自顶部”的物品。 iterator()不服从命令,所以我不能使用它。我是否应该完全使用其他队列?我如何遍历这些项目。

最佳答案

PriorityQueue.iterator()不遵循顺序,但是检索操作将轮询,删除,窥视和访问元素,以访问队列开头的元素。因此,考虑到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/

10-10 14:44