Java 优先级队列行为异常

Java 优先级队列行为异常,java,Java,我认为这是错误的。本应改为打印为[5,6,8,23] 这是个缺陷吗?或者我对优先级队列的理解是错误的 除此之外,如果我在之前或之后更改将23添加到PriorityQueue的位置,这将按预期工作。这只是字符串表示。尝试多次调用remove() [5, 6, 23, 8] 这将导致 System.out.println(queue.remove()); System.out.println(queue.remove()); System.out.println(queue.remove());

我认为这是错误的。本应改为打印为
[5,6,8,23]
这是个缺陷吗?或者我对优先级队列的理解是错误的


除此之外,如果我在之前或之后更改将23添加到PriorityQueue的位置,这将按预期工作。

这只是字符串表示。尝试多次调用
remove()

[5, 6, 23, 8]
这将导致

System.out.println(queue.remove());
System.out.println(queue.remove());
System.out.println(queue.remove());
System.out.println(queue.remove());
(这是
PriorityQueue
使用的)声明它:

返回此集合的字符串表示形式。字符串表示法由集合元素的列表组成,这些元素按迭代器返回的顺序排列,用方括号(“[]”)括起来

如果你看一下,它会说:

返回此队列中元素的迭代器。迭代器不会以任何特定顺序返回元素

只有当您从队列中提取项目时,优先级才起作用,而不是当您获得项目的字符串表示时

System.out.println(queue.remove());
System.out.println(queue.remove());
System.out.println(queue.remove());
System.out.println(queue.remove());
5
6
8
23