简短的故事,我正在实现一个图表,现在我正在研究 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 进行比较。所以这应该有效,还是我完全误解了这个数据结构如何工作的整个概念?