0

我正在尝试创建优先级队列并使用比较器,但是当我添加对象时,添加了最后一个对象,而较早的对象不会出现在队列中。

下面是代码:

public class CustomerCompare implements Comparator<Customer>{
    @Override
    public int compare(Customer c1, Customer c2) {
        if(c1.priority>c2.priority)
            return 1;
        if(c1.priority>c2.priority)
            return -1;
        return 0;

    }
}      

public class PQueue {
    public static void main(String[] args) {
        Comparator<Customer> comparator = new CustomerCompare();
        PriorityQueue<Customer> queue = new PriorityQueue<Customer>(5, comparator);
        queue.add(new Customer("c1", 1));
        System.out.println("Queue is now :" + queue);
        queue.add(new Customer("c2", 7));
        System.out.println("Queue is now :" + queue);
        queue.add(new Customer("c3", 3));
        System.out.println("Queue is now :" + queue);
        queue.add(new Customer("c4", 6));
        System.out.println("Queue is now :" + queue);
        queue.add(new Customer("c5", 5));

        System.out.println("Elements in queue");
        while (true) {
            Customer currentCust = queue.poll();
            if (currentCust == null) {
                break;
            }
            System.out.print(currentCust.getCustomerNum() + " <-- ");
        }
    }
}
4

1 回答 1

1

看起来您使用>而不是<in your compare,将其更改为:

if (c1.priority > c2.priority)
    return 1;
if (c1.priority < c2.priority)
    return -1;
return 0;

编辑:或者更简单一点:

return Integer.valueOf(c1.priority).compareTo(c2.priority);

编辑 2:或使用 Java 7:

return Integer.compare(c1.priority, c2.priority);

于 2013-03-01T07:34:05.390 回答