我试图将对象存储到虚弱队列,每个对象都有其自己的值。因此,我想在使用poll()
方法时获得最小值。但这并不像我预期的那样工作。
我将ID从0到n-1的n个对象相加,然后为每个对象设置值。
当我轮询第一个元素时,它始终是ID为0的对象吗?不管它是什么价值我不知道为什么? 这是代码:
class Element implements Comparable<Element>{
int id;
int value;
public Element(int id) {
this.id = id;
}
@Override
public int compareTo(Element e) {
return Integer.compare(value, e.value);
}
}
//main
Element[] elements = new Element[n];
Queue<Element> piorityQueue = new PriorityQueue<>();
for(int i = 0; i < n; ++i){
elements[i] = new Element(i);
}
for(int i = 0; i < n; ++i){
piorityQueue.add(elements[i]);
}
elements[1].value = 4;
elements[2].value = 3;
elements[3].value = 2;
elements[0].value = 5;
elements[4].value = 1;
elements[5].value = 0;
while(!piorityQueue.isEmpty()){
Element e = piorityQueue.poll();
System.out.println(e.id + " " + e.value);
}
错误的输出在这里:
0 5
5 0
4 1
3 2
2 3
1 4
请,有人可以帮我吗?