相关疑难解决方法(0)

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

这直接来自Java Docs:

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

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

java priority-queue

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

PriorityQueue没有正确排序其内容?

Java Doc说:创建一个PriorityQueue,其默认初始容量(11)根据其自然顺序对其元素进行排序.

但是当我写这样的测试时:

public class Test {

    public static void main (String a[]) {
        Queue<Integer> queue = new PriorityQueue<Integer>();

        for (int i = 1; i <= 20; i++) {
            queue.offer(i);
        }

        System.out.println(queue);

        Queue<Integer> queue2 = new PriorityQueue<Integer>();

        for (int i = 20; i >= 1; i--) {
            queue2.offer(i);
        }

        System.out.println(queue2);
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
[1, 2, 7, …
Run Code Online (Sandbox Code Playgroud)

java

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

标签 统计

java ×2

priority-queue ×1