用户 当我们在java中使用PriorityClass时,当我们使用add方法向Queue中添加元素时,它会自动按顺序排列元素。它是如何做到的?
class Tan{
PriorityQueue\<Integer\> pq= new PriorityQueue();
pq.add(3);
pq.add(1);
pq.add(7);
pq.add(2);
System.out.println(pq);
}
当我们只为类创建对象并添加元素时,它的顺序是如何排列的?
我尝试查看实现 Serialized 的 PriorityQueue 的 java 文档类,但这没有太大帮助
嗯,在幕后,优先级队列使用堆。
简单来说,堆是一种可以在 O(log*n) 时间内找到序列的最小/最大元素的数据结构。这就是优先级队列能够立即找到最高/最低元素的方式。
现在,为了回答您的问题,当您打印或循环优先级队列时,您实际上并不是在循环数组。相反,优先级队列会重复获取最小元素并打印它,给人一种结果数组已排序的感觉。
要进一步理解这个概念,请在 Google 上阅读以下内容: