gpt4 book ai didi

java - 维护 PriorityQueue 中的条目顺序

转载 作者:行者123 更新时间:2023-12-01 07:40:01 26 4
gpt4 key购买 nike

我正在尝试使用 Java 中的 PriorityQueue。

我有一些自定义对象,我通过这种方式将它们添加到队列中:

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 才能不从 PriorityQueue 获取 ClassCastException。所以我让我的 Pet 实现了 Comparable,然后重写了 copmareTo(obj) 方法,只返回 0。

但是奇怪的事情就在这里。当我...

queue.poll();  //return: pet1  queue: pet3, pet2
queue.poll(); //return: pet3 queue: pet2

既然我按照 pet1、pet2 和 pet3 的顺序添加了它们,为什么在我第一次调用 poll() 时,它会对我的 pet 序列进行排序?那么这整个事情就不再是队列了,因为它的进入顺序没有被保留,不是吗?

我怀疑这可能与 Comparable 接口(interface)和compareTo(obj) 方法有关。但我所需要的只是让它保持其输入顺序,因此我根本不需要比较任何内容或对任何内容进行排序。

如何维护其在队列中的进入顺序?

谢谢!

最佳答案

为了保护序列,您必须使用正常的 Queue .

您将必须创建类似 LinkedList 的实例链表从队列实现

关于java - 维护 PriorityQueue 中的条目顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6156175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com