java - 如何按顺序迭代PriorityBlockingQueue

标签 java

我有一个 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/

相关文章:

JAVA数据源

java - 如何提高使用 mapreduce 分析日志文件的性能

java - 在windows上使用java查找GPU规范

Java 正则表达式,正面看后面看负面前瞻

java - Selenium 与身份验证弹出窗口交互

java - java中 "while"之前和 "break"命令之后的名称是什么意思?

java - 我的 Java 程序的软件更新

java - oracle中使用hibernate自动增量列

java - 从 HashMap 填充类属性

java - 每月总计金额的 SQL 数据透视表