当我在 PriorityQueue 中添加一些随机数时,当我打印 PriorityQueue 时,元素将以不同的顺序打印。
这是怎么发生的?
示例
PriorityQueue<Integer> s=new PriorityQueue<Integer>();
s.add(22);
s.add(212);
s.add(423);
s.add(323);
s.add(1);
System.out.print(s);
output:
[1, 22, 423, 323, 212]
最佳答案
toString()
返回优先级队列的内部存储的表示,而不是元素的逻辑顺序的表示。 toArray()
和迭代也是如此:这些方法都不能保证元素将按其优先级顺序返回。
如果你想按优先级顺序获取元素,你需要单独poll()
它们(从而销毁队列)。因此,如果您想以特定顺序列出元素,则 PriorityQueue
不是合适的数据结构。 SortedSet
在这里更合适。相比之下,队列数据结构(其中 PriorityQueue
是一种特殊情况)用于接收和检索一次元素,而不是用于检查静态数据。
关于java - 当添加一些随机元素时,PriorityQueue中的优先级如何确定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66352536/