如何解决在PriorityQueue中维护输入序列
| 我试图利用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接口和compareTo(obj)方法有关。但是我所需要的只是维持它的输入顺序,所以我真的不需要比较任何东西或对它进行排序。
如何在队列中维护其进入顺序?
谢谢!
解决方法
为了保留序列,您必须使用普通队列。
您将必须从Queue创建类似LinkedList链表实现的实例
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。