小故事,我正在实施一个图表,现在我正在克鲁斯卡尔工作,我需要一个优先级队列。我对优先级队列的定义是,具有最小密钥的元素会先出现?这是错的吗?因为当我在队列中插入加权边(或数字)时,它们不会最终排序。Java优先级队列应该如何工作?
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 2015-07-02 21:51:20