简单来说,我正在实现一个图表并且现在正在处理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]。这不是我想要的排序方式!是的,我制作了一个比较器,它进入优先级队列,从边缘对象中提取数字并基于该整数进行比较。所以这应该可以工作,或者我完全误解了这种数据结构的概念?
while (!tja.isEmpty()){ System.out.println(tja.poll()); }
- serhii