这直接来自Java Docs:
该类及其迭代器实现了Collection和Iterator接口的所有可选方法.方法iterator()中提供的迭代器不保证以任何特定顺序遍历优先级队列的元素.如果需要有序遍历,请考虑使用Arrays.sort(pq.toArray()).
基本上,我的PriorityQueue工作正常,但是使用自己内置的toString()方法将其打印到屏幕上会让我看到这个异常现象,并且想知道是否有人可以解释为什么它是迭代器提供的(并且使用过)内部)不按自然顺序遍历PriorityQueue?
我试图使用优先级队列来保持有序的整数列表.在这样一个简单的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)
这不是我期待的考虑自然的讽刺.
我只想迭代而不删除或添加通过队列(作为排序列表)与排序.我还能以简单的方式做到吗?