相关疑难解决方法(0)

java的PriorityQueue的内置迭代器不以任何特定顺序遍历数据结构.为什么?

这直接来自Java Docs:

该类及其迭代器实现了Collection和Iterator接口的所有可选方法.方法iterator()中提供的迭代器不保证以任何特定顺序遍历优先级队列的元素.如果需要有序遍历,请考虑使用Arrays.sort(pq.toArray()).

基本上,我的PriorityQueue工作正常,但是使用自己内置的toString()方法将其打印到屏幕上会让我看到这个异常现象,并且想知道是否有人可以解释为什么它是迭代器提供的(并且使用过)内部)不按自然顺序遍历PriorityQueue?

java priority-queue

11
推荐指数
1
解决办法
5047
查看次数

Java中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)

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

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

java collections priority-queue

2
推荐指数
1
解决办法
263
查看次数

标签 统计

java ×2

priority-queue ×2

collections ×1