PriorityQueue in Java
PriorityQueue in Java
A PriorityQueue is a member of the Java Collection Framework and is used when the values are needed to be processed based on priority.

Priority queue operates similar to a standard queue except that each element has a specific priority associated with it.

Priority of the elements in the PriorityQueue determines the order in which elements are removed from the PriorityQueue.
It is an Abstract DataType (ADT) and unbounded, but it has an internal capacity that governs the capacity of an array used to store the elements on the queue.
Priority queues support comparable data, i.e. the data inserted inside the queue must be able to order in some way, either from “least to greatest” or “greatest to least”, It is so that we can assign relative priorities to each element.
Priority Queue was first introduced with the JDK 1.5.
Constructors of Priority Queue
Constructors | Description |
PriorityQueue() | It initializes a ProirityQueue with the initial default capacity of 11, and the order of the elements are according to their default ordering. |
PriorityQueue(Collection c) | It initializes a PriorityQueue containing the elements of the collection specified in the parameter. |
PriorityQueue(int initialCapacity) | It initializes a PriorityQueue with the initial capacity specified in the argument, and the order of the elements are according to its default ordering. |
PriorityQueue(int initialCapacity, Comparator comparator) | It creates a PriorityQueue with the initial capacity specified in the argument, and the order of the element is according to the specified comparator. |
PriorityQueue(PriorityQueue<E> c) | It creates a PriorityQueue containing the elements that are contained by the specified priority queue. The order of the initialized priority queue is according to the same ordering as the given priority queue. |
PriorityQueue(SortedSet<E> c) | It initializes the PriorityQueue containing the elements of the specified Sorted set. |
Methods of Priority Queue
Modifiers/Data Type | Methods | Description |
boolean | add(E e) | It adds the specified element to the priority queue. |
contains(Object o) | If the queue contains the specified element in the argument, then it will return true. | |
remove(Object o) | First occurrence of the argumented element from the queue will be removed by this method. | |
offer(E e) | It inserts the element specified in the parameter into the queue. | |
void | clear() | It clears all the elements from the queue. |
int | size() | It returns the number of entries available in the queue. |
Comparator<E> | comparator() | It returns the comparator that orders the element in the queue or returns null if the queue is sorted according to the default ordering of its elements. |
Iterator<E> | Iterator() | It returns an iterator for the elements in the queue. |
E | peek() | It retrieves the top element of the queue or returns null if the list is empty. |
E | poll() | It retrieves as well as remove the head of the queue, or returns null if the queue is empty. |
Object[] | toArray() | It returns an array that contains all the elements in the queue. |
T[] | toArray(T[] a) | It returns an array that contains all the elements of the queue, and the return type of the array returned is that of the specified array. |
Example to add elements in the Priority Queue using add(E e) method.
import Java.util.*; class AddDemo { public static void main(String[] args) { //Creating priority queue of default size PriorityQueuepq= new PriorityQueue<String>(); //Adding elements to the queue pq.add("Java"); pq.add("Pyhton"); pq.add("DBMS"); pq.add("MongoDB"); //printing the elements in the priority queue System.out.print("Elements in the Queue are:\n"); for(String val : pq) { System.out.println(val); } } }
Output:
Elements in the Queue are: DBMS MongoDB Pyhton Java
Example to illustrate contains(Object o) method.
import Java.util.*; class ContainsDemo { public static void main(String[] args) { //initializing queue Queueq = new PriorityQueue (); //adding element q.add("Java"); q.add("C#"); q.add("Python"); q.add("CCNA"); for (String val : q){ System.out.println(val); } /*using contains() method to check whether the specified element is present in the queue or not*/ System.out.println("Does the Queue contains 'Java'? " +q.contains("Java")); System.out.println("Does the Queue contains 'SQL'? " +q.contains("SQL")); } }
Output:
C# CCNA Python Java Does the Queue contains 'Java'? true Does the Queue contains 'SQL'? false
Example to remove the element from the queue using remove(Object o) method.
import Java.util.*; class RemoveDemo { public static void main(String args[]) { // Creating an empty PriorityQueue PriorityQueueq = new PriorityQueue (); //adding elements into the Queue q.add("Java"); q.add("C++"); q.add("Python"); q.add("SQL"); q.add("Selenium"); // Displaying the PriorityQueue System.out.println("Elements in the Queue: " + q); // Removing elements using remove() method q.remove("Selenium"); q.remove("Python"); // Displaying the PriorityQueue after removing the elements System.out.println("Elements in the queue after removing elements: " + q); } }
Output:
Elements in the Queue: [C++, Java, Python, SQL, Selenium] Elements in the queue after removing elements: [C++, Java, SQL]
Example to illustrate the offer(E e) method.
import Java.util.*; public class OfferDemo { public static void main(String args[]) { //initializing an empty PriorityQueue PriorityQueueq =new PriorityQueue (); //Adding elements to the queue using add() method q.add("Java"); q.add("Python"); q.add("SQL"); q.add("MongoDB"); q.add("C#"); //now printing the elements in the queue System.out.println("Elements int the Queue"+ q); //Inserting new elements using offer() method q.offer("Tutorial"); q.offer("Example"); //Printing the final queue System.out.println("Priority Queue after Offer method::" +q); } }
Output:
Elements int the Queue[C#, Java, SQL, Python, MongoDB] Priority Queue after Offer method::[C#, Java, Example, Python, MongoDB, Tutorial, SQL]
Example to delete all the elements from the PriorityQueue using the clear() method.
import Java.util.*; public class ClearDemo { public static void main(String[] args) { //Initializing an empty PriorityQueue PriorityQueueq= new PriorityQueue (); //Adding elements to the queue q.add("Java"); q.add("C++"); q.add("Python"); q.add("SQL"); q.add("Selenium"); //Printing the Queue System.out.println("Element in the queue are::"+q); //deleting all the elements in the queue q.clear(); //printing the queue System.out.println("Queue is empty::"+q); } }
Output:
Element in the queue are::[C++, Java, Python, SQL, Selenium] Queue is empty::[]
Example to get the size of the PriorityQueue using size() method.
import Java.util.*; public class SizeDemo { public static void main(String[] args) { //Initializing an empty PriorityQueue PriorityQueueq= new PriorityQueue (); //Adding elements to the queue q.add("Java"); q.add("C++"); q.add("Python"); q.add("SQL"); q.add("Selenium"); //Printing the Queue System.out.println("Element in the queue are:"+q); //Printing the size of the PriorityQueue System.out.println("The size of the given queue is::"+q.size()); } }
Output:
Element in the queue are:[C++, Java, Python, SQL, Selenium] The size of the given queue is::5
Example to illustrate the comparator() method.
import Java.util.Comparator; import Java.util.PriorityQueue; class Student { public String name; public int marks; Student(String name,int marks){ this.name=name; this.marks=marks; } public String toString(){ return this.name+" got "+ this.marks+" marks."; } } class sort implements Comparator{ @Override //using compare() method to compare on the basis of marks of students public int compare(Student a, Student b) { if(a.marks b.marks) { return 1; }else{ return 0; } } } public class ComparatorDemo { public static void main(String[] args) { //creating objects to store the values Student student1 = new Student("Ankit", 98); Student student2 = new Student("Anubhav", 19); Student student3 = new Student("Aakash", 78); Student student4 = new Student("Sumit", 18); //Initializing priority queue PriorityQueue Pqueue = new PriorityQueue (5,new sort()); //adding elements to the queue from the object student Pqueue.add(student1); Pqueue.add(student2); Pqueue.add(student3); Pqueue.add(student4); //using the comparator method to sort the queue, if it is not in its natural ordering Pqueue.comparator(); //printing the sorted elements in the queue for(Student xyz:Pqueue){ System.out.println(xyz); } } }
Output:
Sumit got 18 marks. Anubhav got 19 marks. Aakash got 78 marks. Ankit got 98 marks.
Example to illustrate iterator() method.
import Java.util.Iterator; import Java.util.PriorityQueue; public class IteratorDemo { public static void main(String[] args) { // initializing an empty PriorityQueue PriorityQueueq = new PriorityQueue (); //adding elements into the Queue q.add("xamarin"); q.add("Python"); q.add("SQL"); q.add("Selenium"); // printing the PriorityQueue System.out.println("Elements in the Queue: " + q); // Initializing an iterator Iterator val = q.iterator(); // printing the values after iterating through the queue System.out.println("Elements after iteration: "); while (val.hasNext()) { System.out.println(val.next()); } } }
Output:
Elements in the Queue: [Python, Selenium, SQL, xamarin] Elements after iteration: Python Selenium SQL xamarin
Example to illustrate the peek() method.
import Java.util.*; public class PeekDemo { public static void main(String[] args) { //Initializing an empty PriorityQueue PriorityQueueq= new PriorityQueue (); //adding elements using add() method q.add("Java"); q.add("Python"); q.add("SQL"); q.add("MogoDB"); //printing the queue System.out.println("Elements in the Queue are :"+q); //fetching element using peek() method System.out.println("The head element in the queue is:" +q.peek()); //printing the queue after the peek() System.out.println("Elements in the queue after peek() :"+q); } }
Output:
Elements in the Queue are :[Java, MogoDB, SQL, Python] The head element in the queue is:Java Elements in the queue after peek() :[Java, MogoDB, SQL, Python]
Example to illustrate poll() method.
import Java.util.PriorityQueue; public class PollDemo { public static void main(String[] args) { //Initializing an empty PriorityQueue PriorityQueueq= new PriorityQueue (); //adding elements using add() method q.add("Java"); q.add("Python"); q.add("SQL"); q.add("MogoDB"); //printing the queue System.out.println("Elements in the Queue are :"+q); //fetching element using poll() method System.out.println("The element at the top is:" +q.poll()); //printing the queue after the poll() method System.out.println("Elements in the queue after poll() :"+q); } }
Output:
Elements in the Queue are :[Java, MogoDB, SQL, Python] The element at the top is:Java Elements in the queue after poll() :[MogoDB, Python, SQL]
Example to illustrate toArray() method:
import Java.util.PriorityQueue; public class ToArrayDemo { public static void main(String[] args) { //initializing an empty PriorityQueue PriorityQueueq = new PriorityQueue (); //adding elements into the Queue q.add("Xamarin"); q.add("Android"); q.add("Java"); q.add("Ruby"); q.add("MongoDB"); // Printing the PriorityQueue System.out.println("The PriorityQueue is: " + q); // defining the array and using toArray() Object[] ar = q.toArray(); System.out.println("The array is:"); for (int k = 0; k < ar.length; k++) System.out.println(ar[k]); } }
Output:
The PriorityQueue is: [Android, MongoDB, Java, Xamarin, Ruby] The array is: Android MongoDB Java Xamarin Ruby