将对象添加到piorityQueue时出了点问题,我在这里做错了什么?

时间:2018-08-18 12:45:22

标签: java

我试图将对象存储到虚弱队列,每个对象都有其自己的值。因此,我想在使用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

请,有人可以帮我吗?

0 个答案:

没有答案