How come the elements of priority queue are ordered according to natural order by default as it doesn't implement comparable interface?
From the documentation, it says elements are ordered based on natural ordering, but I can't find anywhere it talks about an equals method nor comparable. How is it happening internally?
All Implemented Interfaces: Serializable, Iterable, Collection, Queue.
If it implements comparable, then why doesn't it say in the above line?
Example:
public static void main(String[] args) {
PriorityQueue<String> pq = new PriorityQueue<String>();
pq.add("2");
pq.add("4");
System.out.println(pq); //prints [2, 4]
pq.offer("1");
System.out.println(pq); // prints [1, 4, 2]
pq.add("3");
System.out.println(pq); // prints [1, 3, 2, 4]
}
}
Also the third print statement prints [1, 3, 2, 4] instead of prints [1, 2, 3, 4]. Why? It should be natural ordering, right?
E
needs to implementComparable
or aComparator
needs to be defined, this is clearly stated in the doc. Why shouldPriorityQueue
implementComparable
? – Sax