Alg*_*fic 5 java priority-queue data-structures
简短的故事,我正在实现一个图表,现在我正在研究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);
Run Code Online (Sandbox Code Playgroud)
那将打印出来; [1,54,51,102,99,55].这不像我希望的那样排序!是的,我创建了一个进入优先级队列的comperator,该队列从edge对象中提取数字并根据该int进行比较.所以这应该有用,或者我只是完全误解了这个数据结构如何工作的整个概念?
我没有使用PriorityQueueJava的经验,但看起来优先级没有集成到(iterator()或toString()使用iterator()).
如果你这样做:
while (tja.size()>0)
System.out.println(tja.remove());
Run Code Online (Sandbox Code Playgroud)
你得到了正确的结果.