Я пытаюсь использовать PriorityQueue в Java.
У меня есть несколько пользовательских объектов, и я добавляю их в очередь следующим образом:
Pet pet1 = new Pet();
Pet pet2 = new Pet();
Pet pet3 = new Pet();
PriorityQueue<Pet> queue = new PriorityQueue<Pet>();
queue.offer(pet1);
queue.offer(pet2);
queue.offer(pet3);
На этом этапе я понимаю, что мои объекты Pet должны реализовывать Comparable, чтобы не получать ClassCastException от PriorityQueue. Таким образом, мой Pet реализует Comparable, а затем переопределил метод copmareTo (obj), просто вернув 0.
Но странно то, что это здесь. Когда я ...
queue.poll(); //return: pet1 queue: pet3, pet2
queue.poll(); //return: pet3 queue: pet2
Поскольку я добавил их в порядке pet1, pet2 и pet3, почему при моем первом вызове poll () он отсортировал последовательности моих питомцев? Тогда вся эта вещь больше не становится очередью, поскольку ее последовательность входа не сохраняется, не так ли?
Я подозреваю, что это может быть связано с интерфейсом Comparable и методом CompareTo (obj). Но все, что мне нужно, это чтобы он поддерживал свою последовательность ввода, поэтому мне не нужно ничего сравнивать или сортировать вообще.
Как сохранить последовательность ввода в очереди?
Спасибо!