×

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 in Java

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

Priority queue

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
PriorityQueue pq= 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
Queue q = 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
PriorityQueue q = 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
PriorityQueue q =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
PriorityQueue q= 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
PriorityQueue q= 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.marksb.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
PriorityQueuePqueue = 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
PriorityQueue q = 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
PriorityQueue q= 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
PriorityQueue q= 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
PriorityQueue q = 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 


Related Topics

3N+1 problem program in Java

The 3N+1 problem is a hypothesis in the field of abstract mathematics (not yet proven). Collectively known as the Collatz problem. This tutorial will describe about the 3N+1 problem and...

3 minutes read.

Java vs Go

Java: Java is an object oriented programming language. It is also known as multi threaded language. It was designed by James gosling in the year 1995. We can also say that...

4 minutes read.

Java Math rint() Method

The rint() method of Java Math class returns the double value which is close to the specified argument and is equal to mathematical integer. Syntax: public static double rint(double a) Parameters: The parameter ‘a’...

1 minute read.

Unicode System in Java

In this tutorial, we will understand the meaning and emergence of the Unicode system in java. The Unicode system is one of the important and useful features in the world...

6 minutes read.

Java String contains() method

contains() method returns true only if it contains the given sequence of characters otherwise it returns false. syntax: public boolean contains(CharSequence sequence) parameters: sequence : It is the sequence to be searched. Returns: It returns true...

1 minute read.

Construct the Largest Number from the Given Array in Java

In this section, we will create a Java programme that will enable you to locate the greatest integer in an array. The programme will begin comparing the array's numbers with...

3 minutes read.

Java Developer

Who is a Java Developer? A Java developer is a skilled programmer who works on commercial applications, software, and webpages.  Java developers can work in two different areas: Operating system development:...

3 minutes read.

Java 9 Interface Private Method

Java 9 provides us the facility to include private methods inside the java interface. In java 8 and earlier versions, we are supposed to use only constant variables and abstract...

3 minutes read.

if-else Program in Java

if-else Program in Java The if-else program in Java controls which code snippet will execute. The if-else program is very basic and yet very important. Because it checks how well one...

19 minutes read.

Set Up the Environment in Java

The Java is regarded as the pure object-oriented programming language. The Java applications are first compiled into the byte-code and then run by using the JVM. The Java is the...

4 minutes read.

Java Switch string

A multi-way branch statement is the switch statement. It offers a simple method for allocating execution to various code sections according to the expression's value. Primitive data types, including bytes,...

3 minutes read.

Java Read File Line by line

Java provides two options to read files line by line. Each option offers different benefits and has its own set of drawbacks. Following are the ways through which on accomplish...

5 minutes read.

Java String trim() method

Java String trim() method returns String after eliminating leading and trailing spaces. Note:- Java String trim() method doesn't trim or omit middle spaces. Syntax: public String trim() Returns: It returns string with omitted leading and...

2 minutes read.

Ordinal Number in Java

What is the Ordinal Number in Java? An object's or person's position or rank can be expressed mathematically using an ordinal number. Depending on the criteria used to establish the positions,...

3 minutes read.

Java Math random() Method

The random() method of Math class returns a double value with a positive sign, less than 1 and greater than or equal to 0.0. This method is properly synchronized with...

1 minute read.

Java Boolean logicalAnd() Method

The logicalAnd() method of Java Boolean class returns the result of implementing logicalAND operation on the specified Boolean operands. Syntax:public static boolean logicalAnd (boolean a, boolean b) Parameters:The parameters ‘a’ and ‘b’...

2 minutes read.

Java Single Linkedlist

Like arrays, linked lists are a type of linear data structure. Unlike arrays, which store each element in the same location, linked lists employ pointers to connect the elements together. In...

25 minutes read.

Java Byte Keyword

Byte: The Keyword Byte in Java programming language is a primitive data type.Digital content that is most used for eight bits is called as a byte.The Java Byte Keyword is used...

3 minutes read.

Java String toUpperCase() methods

Java String toUpperCase() method is used to convert all the characters of the String into upper case. Syntax public String toUpperCase() public String toUpperCase(Locale locale) Returns It returns upper case String. Java String toUpperCase() Example 1: public...

1 minute read.

Java file Reader

File Reader: It is used to read the data from files. This class inherits the properties from Input Stream Reader Class. File Reader is for reading characters from the file. Input Stream: Java.io...

4 minutes read.