我正在尝试利用队列,但是队列正在重新组织自身,我不知道为什么
其他使用队列的人似乎都可以正常工作,而且似乎没人遇到这个问题
public static void main(String[] args){
PriorityQueue<String> cue = new PriorityQueue<String>();
cue.offer("this");
cue.offer("that");
cue.offer("then");
System.out.printf("%s \n", cue);
System.out.printf("%s \n", cue.peek());
cue.poll();
System.out.printf("%s \n", cue);
}
我希望它能打印:
[this, that, then]
this
[that, then]
但是,它打印:
[that, this, then]
that
[then, this]
我只是不知道为什么
最佳答案
从PriorityQueue
的Java文档中:
基于优先级堆的无界优先级队列。优先级队列的元素根据其自然顺序进行排序
所以这是设计使然。
您可以使用java.util.LinkedList
(实现Queue
接口,并且将像先进先出队列一样工作),并为您提供预期的排序