Java中PriorityQueue中的奇怪排序

Bob*_*r02 2 java collections priority-queue

我试图使用优先级队列来保持有序的整数列表.在这样一个简单的exaple:

PriorityQueue<Integer> queue = new PriorityQueue<>();
queue.offer(3000);
queue.offer(1999);
queue.offer(999);
for(Integer i : queue)
    System.out.println(i);
Run Code Online (Sandbox Code Playgroud)

这打印

999
3000
1999
Run Code Online (Sandbox Code Playgroud)

这不是我期待的考虑自然的讽刺.

我只想迭代而不删除或添加通过队列(作为排序列表)与排序.我还能以简单的方式做到吗?

Vin*_*ent 7

PriorityQueue是一个优化的集合,用于快速查找尾部或头部值,使用称为堆的部分有序树结构(在维基百科上查找).如果您弹出元素,它们将被订购.如果要迭代,请使用例如SortedSet,它也存储已排序的元素.