I have a java program which goes like this
public class PriorityQueueExample {
public static void main(String[] args) {
PriorityQueue
Insertion into a priority queue is not enough to sort a list of elements, since it doesn't store them in sorted order; it stores them in the partially sorted heap order. You have to remove the elements in a loop to sort them:
while (pq.size() > 0)
System.out.println(pq.remove());
poll() and remove() will give sorted order not peek() as per java8.
PriorityQueue<Integer> pq = new PriorityQueue<Integer>();
pq.add(10);
pq.add(1);
pq.add(9);
pq.add(2);
pq.add(8);
pq.add(3);
pq.add(7);
pq.add(4);
pq.add(6);
pq.add(5);
// Remove items from the Priority Queue (DEQUEUE)
while (!pq.isEmpty()) {
// System.out.println(pq.remove());
System.out.println(pq.poll());
}
Output for poll() & remove():
1
2
3
4
5
6
7
8
9
10
output for peek():
1
1
1
1
1
1
1
1
1
1
It is sorted, but internally the elements are stored in a heap. If you call peek()
, poll()
, or remove()
, you will get the right order (and that's how you access queues).