我正在尝试利用队列,但是队列正在重新组织自身,我不知道为什么

其他使用队列的人似乎都可以正常工作,而且似乎没人遇到这个问题

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接口,并且将像先进先出队列一样工作),并为您提供预期的排序

09-04 20:12