【发布时间】:2020-04-26 03:07:37
【问题描述】:
我将配置元素放入PriorityQueue。我正在通过
for (Element e : queue) {
...
}
这很好用,但是在将额外的配置元素放入队列后,排序被打乱了。更奇怪的是,这取决于我将元素输入队列的顺序,排序是否正确。
【问题讨论】:
我将配置元素放入PriorityQueue。我正在通过
for (Element e : queue) {
...
}
这很好用,但是在将额外的配置元素放入队列后,排序被打乱了。更奇怪的是,这取决于我将元素输入队列的顺序,排序是否正确。
【问题讨论】:
PriorityQueue 状态的 Javadoc
不保证迭代器以任何特定顺序遍历优先级队列的元素。
基本上,如果需要排序,PriorityQueue 不能在 for-each 构造中使用。
根据有问题的代码,使用迭代的queue.poll() 调用或切换到另一个数据结构,如List,并通过Collections.sort() 明确排序。
由于排序正确有时:一开始你很幸运。
【讨论】: