Java PriorityQueue不轮询预期对象

时间:2011-01-20 14:54:00

标签: java priority-queue

这是我在这里的第一篇文章,所以请随时指出我在这里制定问题的正确方向。

我的问题在于java.util.PriorityQueue。

我有一个我初始化的队列;

    myComparable comp = new myComparable();

    PriorityQueue<someObject> prioritized = new PriorityQueue<someObject>(11, comp);

我认为对于我队列中的内容或myComparable的实现方式而言,这很重要。

然后我得到意想不到的输出:

prioritizedObject = prioritized.poll();

for(someObject otherObject : prioritized)
{
    System.out.println(comp.compare(prioritizedObject, otherObject));
    System.out.println(comp.equals(prioritizedObject, otherObject));

}

对于列表中的一个对象,打印:
1

这怎么可能?当比较器Im使用说队列中的另一个对象较小时,如何从队列中轮询()一个对象?

1 个答案:

答案 0 :(得分:1)

如果其他一切都正确(没有并发推送,没有让测试错误),我可以想象两个原因:

  • 对象以影响其顺序的方式发生变化(禁止)
  • 比较器错误(不可传递或其他)