Java PriorityQueue Class



Introduction

The Java PriorityQueue class is an unbounded priority queue based on a priority heap. Following are the important points about PriorityQueue −

  • The elements of the priority queue are ordered according to their natural ordering, or by a Comparator provided at queue construction time, depending on which constructor is used.

  • A priority queue does not permit null elements.

  • A priority queue relying on natural ordering also does not permit insertion of non-comparable objects.

Class declaration

Following is the declaration for java.util.PriorityQueue class −

public class PriorityQueue<E>
   extends AbstractQueue<E>
   implements Serializable

Parameters

Following is the parameter for java.util.PriorityQueue class −

E − This is the type of elements held in this collection.

Class constructors

Sr.No. Constructor & Description
1

PriorityQueue()

This creates a PriorityQueue with the default initial capacity (11) that orders its elements according to their natural ordering.

2

PriorityQueue(Collection<? extends E> c)

This creates a PriorityQueue containing the elements in the specified collection.

3

PriorityQueue(int initialCapacity)

This creates a PriorityQueue with the specified initial capacity that orders its elements according to their natural ordering.

4

PriorityQueue(int initialCapacity, Comparator<? super E> comparator)

This creates a PriorityQueue with the specified initial capacity that orders its elements according to the specified comparator.

5

PriorityQueue(PriorityQueue<? extends E> c)

This creates a PriorityQueue containing the elements in the specified priority queue.

6

PriorityQueue(SortedSet<? extends E> c)

This creates a PriorityQueue containing the elements in the specified sorted set.

Class methods

Sr.No. Method & Description
1 boolean add(E e)

This method inserts the specified element into this priority queue.

2 void clear()

This method removes all of the elements from this priority queue.

3 Comparator<? super E> comparator()

This method returns the comparator used to order the elements in this queue, or null if this queue is sorted according to the natural ordering of its elements.

4 boolean contains(Object o)

This method returns true if this queue contains the specified element.

5 void forEach​(Consumer<? super E> action)

This method performs the given action for each element of the Iterable until all elements have been processed or the action throws an exception.

6 Iterator<E> iterator()

This method returns an iterator over the elements in this queue.

7 boolean offer(E e)

This method inserts the specified element into this priority queue.

8 boolean remove(Object o)

This method removes a single instance of the specified element from this queue, if it is present.

9 boolean removeAll​(Collection<?> c)

This method removes all of this collection's elements that are also contained in the specified collection (optional operation).

10 boolean removeIf​(Predicate<? super E> filter)

This method removes all of the elements of this collection that satisfy the given predicate.

11 boolean retainAll​(Collection<?> c)

This method retains only the elements in this collection that are contained in the specified collection (optional operation).

12 Spliterator<E> spliterator()

This method creates a late-binding and fail-fast Spliterator over the elements in this queue.

13 <T> T[] toArray(T[] a)

This method returns an array containing all of the elements in this queue; the runtime type of the returned array is that of the specified array.

Methods inherited

This class inherits methods from the following classes −

  • java.util.AbstractQueue
  • java.util.AbstractCollection
  • java.util.Object
  • java.util.Collection

Adding an Item to a Priority Queue Example

The following example shows the usage of Java PriorityQueue add(E) method to add Integers. We're adding couple of Integers to the PriorityQueue object using add() method calls per element and then print each element to show the elements added.

package com.tutorialspoint;

import java.util.PriorityQueue;

public class PriorityQueueDemo {
   public static void main(String[] args) {
      
      // create an empty priority queue with an initial capacity
      PriorityQueue<Integer> queue = new PriorityQueue<>(5);

      // use add() method to add elements in the queue
      queue.add(20);
      queue.add(30);
      queue.add(20);
      queue.add(30);
      queue.add(15);
      queue.add(22);
      queue.add(11);

      // let us print all the elements available in queue
      for (Integer number : queue) {
         System.out.println("Number = " + number);
      }
   }
}

Let us compile and run the above program, this will produce the following result −

Number = 11
Number = 20
Number = 15
Number = 30
Number = 30
Number = 22
Number = 20
Advertisements