I have a priority queue that being manipulated in a while(true) loop inside a thread. In some cased I want to take the queue content and sort it in an array. I do it this way:
Object[] array = sellQueues[0].toArray();
Arrays.sort(array);
The compare method for this priority queue is as follow:
public int compare(Order o1, Order o2) {
try {
if (o1.getBroker().getOrdersPriority() > o2.getBroker().getOrdersPriority())
return 1;
else if (o1.getBroker().getOrdersPriority() < o2.getBroker().getOrdersPriority())
return -1;
else {
if (o1.getBeginDate().before(o2.getBeginDate()))
return 1;
else if (o1.getBeginDate().after(o2.getBeginDate()))
return -1;
else {
if (o1.getBeginTime().before(o2.getBeginTime()))
return 1;
else if (o1.getBeginTime().before(o2.getBeginTime()))
return -1;
else
return 0;
}
}
} catch (NullPointerException e) {
return 0;
}
}
For some reason, Sometimes I get the error:
java.lang.IllegalArgumentException: Comparison method violates its general contract!