Java PriorityQueue не опрашивает ожидаемый объект - PullRequest
0 голосов
/ 20 января 2011

Это мой первый пост здесь, поэтому не стесняйтесь указывать мне правильное направление в отношении формулировки вопроса здесь.

Моя проблема связана с 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
false

Как это может быть?Как я могу опрашивать () объект из очереди, в то время как используемый им компаратор говорит, что другой объект в очереди меньше?

1 Ответ

1 голос
/ 20 января 2011

В случае, если все остальное правильно (нет одновременных нажатий, неправильный тест), я мог бы представить две причины:

  • объекты изменяются таким образом, что влияют на их порядок (запрещено)*
  • компаратор неверен (не транзитивен или что-то еще)
...