我正在尝试使用优先级队列来保存整数的有序列表。在一个像这样的简单例子中:
PriorityQueue<Integer> queue = new PriorityQueue<>();
queue.offer(3000);
queue.offer(1999);
queue.offer(999);
for(Integer i : queue)
System.out.println(i);
这会打印
999
3000
1999
考虑到自然排序,这不是我所期望的。
我只是想进行迭代,而不需要通过队列(用作排序列表)删除或添加排序。我还能用简单的方式做到这一点吗?
最佳答案
PriorityQueue 是一个针对快速查找尾部或头部值而优化的集合,使用称为堆的部分排序树结构(在维基百科上查找)。如果弹出元素,它们将被排序。如果您想迭代,请改用 SortedSet,它也存储已排序的元素。
关于java - Java 中 PriorityQueue 的奇怪排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10972459/