简而言之,我正在实现一个图表,现在我正在研究 Kruskal,我需要一个优先级队列。我对优先级队列的定义是具有最小键的元素将排在第一位?这是错误的吗?因为当我在队列中插入加权边(或数字)时,它们最终不会被排序。
PriorityQueue<Integer> tja = new PriorityQueue<Integer>();
tja.add(55);
tja.add(99);
tja.add(1);
tja.add(102);
tja.add(54);
tja.add(51);
System.out.println(tja);
那会打印出这个; [1、54、51、102、99、55]。这没有像我希望的那样排序!是的,我做了一个比较器,它进入优先级队列,从边缘对象中提取数字并基于该 int 进行比较。所以这应该可行,或者我完全误解了这个数据结构如何工作的整个概念?
System.out.println 正在调用 toString() 方法,该方法使用迭代器,不能保证遵循自然顺序。来自docs:“方法 iterator() 中提供的迭代器不保证以任何特定顺序遍历优先级队列的元素。”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)