×

Java Queue

The Java.util package has the interface Queue, which does extend the Collection interface. It is used to protect the parts that are managed using the FIFO approach.

Being an interface, the queue needs a concrete class for the declaration, and the most popular classes in Java are the LinkedList and Priority Queue. It is an ordered list of objects where new elements are added at the end and old elements are deleted at the beginning. The implementations of these classes are not thread safe. If a thread-safe implementation is required, PriorityBlockingQueue is an option.

Queue Interface Statement:

It is stated that the Queue interface is:

public interface Queue<Q> extends Collection<Q> 

Creating queue objects:

The queue is an interface; hence it is not possible to create objects of the type of queue. To build an object, we always need a class that extends this list. Additionally, because Java 1.5 included Generics, it is now able to limit the kinds of objects that can be stored in the Queue.

This type-safe queue is described as follows:

Queue<O> queue = new PriorityQueue<O> (); 

Methods of Java Queue Interface:

      Method                                      Description
Boolean add(object)It is utilized to successfully add the provided element to this queue and returns true.
Boolean offer(object)It's employed to add the desired element to this queue.
Object remove()It is employed to recover and get rid of the queue's head.
Object poll()If the queue is empty, it returns null; otherwise, it obtains and removes the queue's head.
Object element()It is employed to obtain the head of this queue but does not remove it.
Object peek()If the queue is empty, it returns null, otherwise, it obtains the head of the queue without removing it.

Queue Characteristics

  • The queue is utilized to add elements to the end of the queue and delete items from the queue's beginning. It uses the FIFO principle.
  • All Collection interface methods, such as insertion, deletion, etc., are supported by the Java Queue.
  • The most popular implementations are PriorityQueue, ArrayBlockingQueue, and LinkedList.
  • If a null action is performed on a blocking queue, a NullPointerException is raised.
  • Unbounded Queues are the Queues included in java.util package.
  • The Bounded Queues are the Queues that are included in the java.util.concurrent package.
  • All other queues do not allow insertion or removal, but the Deque does at the tail and head of the queue, respectively. The Deques permit the addition and elimination of components from either end.

Example:

QueueExpl1.java

import java.util.*;
 class QueueExpl1 {
  
    public static void main(String args[])
    {
        Queue<String> q = new PriorityQueue<>();
  
        q.add("Welcome");
        q.add("To");
        q.add("JavaTpoint");
        System.out.print(q);
        q.remove("Welcome");
        System.out.print(q);
    }
}

Output:

Java Queue

The following classes support the Queue Interface:

Priority Queue class:

Another class defined in the collection framework, PriorityQueue, provides a method for prioritizing objects as they are processed. In the Java queue, object insertion and deletion are described as following a FIFO pattern. However, a PriorityQueue can be used when it is necessary to process queue elements in accordance with their priority.

PriorityQueue Class Declaration:

Let's examine the java.util.PriorityQueue class declaration.

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

Let us understand more about this using an example.

Priority Queue Example

PriorityQueueExpl.java

import java.util.*;  
class PriorityQueueExpl{  
public static void main(String args[]){  
PriorityQueue<String> q = new PriorityQueue<String>();  
q.add("Welcome");  
q.add("to");  
q.add("Java");  
q.add("T");  
q.add("point");  
System.out.println(" "+q.element());  
System.out.println(" "+q.peek());  
System.out.println(" repeating the queue's components ");  
Iterator i = q.iterator();  
while(i.hasNext()){  
System.out.println(i.next());  
}  
q.remove();  
q.poll();  
System.out.println("after eliminating two components:");  
Iterator<String> i2=q.iterator();  
while(i2.hasNext()){  
System.out.println(i2.next());  
}  
}  
}  

Output:

Java Queue

LinkedList:

The collection framework's built-in class LinkedList implements the linked list data structure by default. Each element is a discrete object with a data piece and an address section, and the components are not retained in sequential locations. It is a linear data structure. The elements are linked together via pointers and addresses. Every component is known as a node. Because of their dynamic nature and ease of insertions and removals, they are preferred to queues or arrays. Let's examine how to create a queue object using this class.

Let us understand more about this using an example.

LinkedListExpl.java

import java.util.*;
class LinkedListExpl
 {
 public static void main(String args[])
    {
        // Empty LinkedList is created
        Queue<Integer> ll1 = new LinkedList<Integer>()
// Adding elements to the ll1
        ll1.add(1);
        ll1.add(2);
        ll1.add(5);
 // Topmost element is printed
        System.out.println(ll1.peek());
        System.out.println(ll1.poll());
       // Topmost element is printed
        System.out.println(ll1.peek());
    }
}

Output:

Java Queue

Priority Blocking Queue:

It should be emphasized that neither the PriorityQueue nor the LinkedList implementations are thread safe. If a thread-safe solution is required, one possibility is PriorityBlockingQueue. An unbounded blocking queue that offers to block retrieval operations and adheres to the same ordering rules as the PriorityQueue class is the PriorityBlockingQueue.

Due to resource exhaustion brought on by adding elements occasionally failing with an OutOfMemoryError due to its unbounded nature.

Let us understand with an example.

PBQExpl.java

import java.util.concurrent.PriorityBlockingQueue;
import java.util.*;
class PBQExpl {
    public static void main(String args[])
    {
        // Empty Priority Blocking Queue is created
        Queue<Integer> pbq1 = new PriorityBlockingQueue<Integer>();
   // Adding items to the pbq1
        pbq1.add(1);
        pbq1.add(2);
        pbq1.add(5);
  
        // Top most element is printed
        System.out.println(pbq1.peek());
  
        // Top most element is printed and
        // it is removed from Priority Block Queue
        System.out.println(pbq1.poll());
  
        // Top most element is printed
        System.out.println(pbq1.peek());
    }
}

Output:

Java Queue

Related Topics

Timestamp Operation in Java

JDBC escape syntax is supported by Timestamp's formatting and parsing functions. Additionally, it adds support for fractional seconds values for SQL TIMESTAMP.java.util.Date is wrapped in a lightweight wrapper that enables...

3 minutes read.

Upcasting and Downcasting in Java

Type casting in Java is an important and very interesting topic to deal with. But here upcasting and downcasting is somewhat related to typecasting. In normal typecasting, we convert from...

6 minutes read.

What is advance Java?

The definition of advance inside the dictionary refers to a forward motion, development, or progress, and the definition of enhancing is something that improves things. To become experts in that...

3 minutes read.

Comparator vs Comparable in Java

Comparator Vs Comparable in Java In Java, sorting of primitive data types can be done using different inbuilt functions that are available. But for sorting the collection of objects or types...

4 minutes read.

Java Enumeration

In a computer language, enumerations express a set of named constants. For instance, the four suits in a deck of playing cards could be represented by the enumerators Club, Diamond,...

4 minutes read.

Ramanujan Number or Taxicab Number in Java

In this section, we will discuss what a Ramanujan number (also known as a Hardy-Ramanujan number) is and how to use a Java programme to determine if a given integer...

3 minutes read.

Best Java Security Framework

The security of applications is currently our top concern when creating them. The applications or bits of code running over the network are exposed to dangers and may jeopardize integrity,...

3 minutes read.

Java.lang.Exception.NoRunnableMethods

In Programming language, the java lang unexpected no precompiled methods error generally refers to a Junit exception that happens whenever Junit is incapable of locate the precompiled test methods. When...

4 minutes read.

Lombok Java

What is Lombok java? A well-liked and widely-used Java framework that is used to reduce or eliminate boilerplate code is called Project Lombok. Both time and effort are saved. We may...

7 minutes read.

Matrix Multiplication Program in Java

Matrix Multiplication Program in Java The matrix multiplication program in Java is the continuation of the matrix program in Java that we have already discussed earlier. In this section, we will...

3 minutes read.

Hashing Algorithm in Java

The hashing algorithm is a method that maps data to the fixed-length hash. The Java hash-based algorithm employs a cryptographic mathematical operation. A hash technique or hash function is supposed...

8 minutes 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.

Java String equalsIgnoreCase() method

equalsIgnoreCase() method compares two Strings based on the their content but ignore the case. Syntax public boolean equalsIgnoreCase(Objects anObject) Parameter anObject: Object to be compared with the current String without case consideration. Returns It returns true...

1 minute read.

Java String Concatenation

Java String Concatenation Java programming provide a way to combine multiple strings into a single string. It is called as String Concatenation. There are different ways to concatenate two or more...

4 minutes read.

Sort Elements by Frequency in Java

To sort the elements in Java by using frequency, we need an input array. We should create a function that sorts the elements in an array by using their frequencies...

3 minutes read.

Inheritance Program in Java

Inheritance Program in Java Inheritance is one of the important pillars of Object-Oriented Programming that facilitates parent-child relationships in programming. Using inheritance, we can create a new class with the help...

7 minutes read.

Diamond problem in Java

The Diamond Problem in Java is connected to multiple inheritances. It is also referred to as the "deadly diamond dilemma" or even the "deadly diamond of death”. The solution for...

5 minutes read.

Pattern Programs in Java

Pattern Programs in Java In Java, pattern programs are the most important from the perspective of interviews. The pattern programs improve thinking and coding skills. It also helps us to develop a...

27 minutes read.

Java.net.SocketException

Exception The problem occurred during the execution of the program. If an exception occurs in the program, the program gets terminated. To skip the exception occurring statements, we have to handle...

4 minutes read.

Catalan number in Java

In general mathematics, Catalan numbers can be defined as the sequence of natural numbers that frequently occur in counting problems often encountered in recursively defined objects. Mathematical formula of Catalan number Coming...

3 minutes read.