優先キューを作成してコンパレータを使用しようとしていますが、オブジェクトを追加すると、最後のオブジェクトが追加され、以前のオブジェクトがキューに表示されません。
以下はコードです:
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() + " <-- ");
}
}
}