HeapifyJava priorityQueue

时间:2014-11-24 10:21:19

标签: java data-structures heap priority-queue

我正在使用PriorityQueue在我的代码中使用堆数据结构。我不想找到cost最低的客户。客户的成本可能会在执行期间发生变化。所以我保留了一大堆所有客户。我正在尝试使用代码 - (输出在注释中显示)

    PriorityQueue<Customer> pq = new PriorityQueue<>();
    Customer c1 = new Customer(10);
    Customer c2 = new Customer(20);
    Customer c3 = new Customer(3);
    Customer c4 = new Customer(40);
    pq.add(c1);pq.add(c2);pq.add(c3);pq.add(c4);

    System.out.println(pq.peek() == c3); //Prints true

    c1.cost = 1;

    System.out.println(pq.peek() == c1); //Prints false

虽然对象c1的状态发生了变化,但是Heap没有得到Heapified。基本上我想要两行输出true。我没有找到明确Heapifying the Heap的任何javadoc帮助。有人可以帮忙,我该怎么做/调整这个?

1 个答案:

答案 0 :(得分:0)

更新后,您需要删除对象并将其重新插入PriorityQueue。优先级队列的工作原理是在插入新元素时将它们放在适当的位置,并且不考虑更新。