- Collection Framework in JavaCollections Class in JavaList Interface in Java with ExamplesArrayList in JavaVector Class in JavaLinkedList in JavaQueue Interface In JavaPriorityQueue in JavaSet in JavaHashSet in JavaLinkedHashSet in JavaMap in the JavaHashMap in JavaHashtable in JavaLinkedHashMap in Java
Queue Interface In Java
In Java, the Queue
interface represents a collection that is designed to hold elements in a specific order, with the ability to insert and remove elements at both ends. A Queue
typically follows the First-In-First-Out (FIFO) ordering principle, meaning that the elements are processed in the order they are added.
The Queue
interface extends the Collection
interface and adds methods to insert, remove, and inspect elements at the head and tail of the queue.
Methods of Queue Interface
add(E element)
: Adds the specified element to the tail of the queue, throwing an exception if the operation fails.offer(E element)
: Adds the specified element to the tail of the queue, returningtrue
if the operation succeeds andfalse
if the operation fails.remove()
: Removes and returns the element at the head of the queue, throwing an exception if the queue is empty.poll()
: Removes and returns the element at the head of the queue, returningnull
if the queue is empty.element()
: Returns the element at the head of the queue without removing it, throwing an exception if the queue is empty.peek()
: Returns the element at the head of the queue without removing it, returningnull
if the queue is empty.
In addition to the Queue
interface, there are several classes in Java that implement the Queue
interface, such as LinkedList
, PriorityQueue
, and ArrayDeque
. These classes provide different implementations of the Queue
interface with different performance characteristics and ordering properties.
Here's an example of how to use the Queue interface in Java:
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
// Create a new LinkedList to use as a Queue
Queue<String> queue = new LinkedList<>();
// Add elements to the Queue
queue.add("Alice");
queue.add("Bob");
queue.add("Charlie");
// Print the elements in the Queue
System.out.println("Elements in the Queue: " + queue);
// Retrieve and remove the head of the Queue
String head = queue.poll();
System.out.println("Head of the Queue: " + head);
// Retrieve, but do not remove, the head of the Queue
head = queue.peek();
System.out.println("Head of the Queue: " + head);
// Check if the Queue contains a particular element
boolean containsCharlie = queue.contains("Charlie");
System.out.println("Queue contains Charlie: " + containsCharlie);
// Iterate over the elements in the Queue
for (String element : queue) {
System.out.println("Element: " + element);
}
// Remove all elements from the Queue
queue.clear();
System.out.println("Elements in the Queue after clear: " + queue);
}
}
In this example, we create a Queue
using a LinkedList
, and add three elements to it using the add()
method. We then print the elements in the queue using the toString()
method, retrieve and remove the head of the queue using the poll()
method, and retrieve, but do not remove, the head of the queue using the peek()
method. We also check if the queue contains a particular element using the contains()
method, and iterate over the elements in the queue using a for-each loop. Finally, we remove all elements from the queue using the clear()
method.
Note that the Queue
interface is implemented by several classes in the Java Collections Framework, including LinkedList
, PriorityQueue
, and ArrayDeque
. Each of these classes
Characteristics of a Queue
FIFO Order: As mentioned, elements are processed in a FIFO order. This means that the first element added to the Queue will be the first one to be removed.
Size Limit: A Queue may have a size limit, meaning that once the maximum number of elements is reached, no further elements can be added until some are removed.
Null Elements: Depending on the Queue implementation, null elements may or may not be allowed.
Blocking and Non-Blocking Operations: Depending on the Queue implementation, certain operations may block until they can be successfully completed (e.g. adding an element to a full Queue), while others may not block and instead return a failure or error.
Priority: Some Queue implementations may provide a priority mechanism, meaning that certain elements may be processed before others based on their priority level.
Overall, the characteristics of a Queue in Java make it a useful tool for managing collections of elements in a specific order, with various options for handling size limits, null elements, blocking and non-blocking operations, and priority.