What is Deque in Java Collection?
It is one of the collections class introduced in java 6 . Deque is short form of what we say as Double Ended Queue, It represents a queue where you can insert and remove elements from both ends of the queue.
Deque interface extends java.util.Queue which in turn extends java.util.Collection.
What advantage does it have over normal queue?
It enables the ability to insert or remove objects either from start or end of the collection whereas in normal queue we can insert or remove objects only at the end of collection.
Deque Implementations
Since Deque is a subtype of queue as we stated earlier, it inherits all methods from the Queue interfaces. We need to instantiate a concrete implementation of the interface before we can use Deque interface.
Below are the Deque implementations in the Java Collections API we can choose from:
- java.util.LinkedList : LinkedList is a standard double linked list implementation.
- java.util.ArrayDeque : ArrayDeque inherits all characteristic of dynamic array and can grow from both ends.
ArrayDeque is an implementation of the ‘Deque’ interface
Difference between ArrayList and Arraydeque
- In ArrayDeque we can insert or delete elements from both side of queue but in ArrayList elements are deleted and inserted from any index.
- ArrayDeque is better for implementing LIFO and FIFO than ArrayList.
- ArrayDeques performs better for inserting and deleting element than accessing the element whereas ArrayList performs better for accessing elements.
Implementation of ArrayDeque:
Example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
package com.j2eereference.coreJava; import java.util.ArrayDeque; import java.util.Deque; public class ArrayDequeDemo { public static void main(String[] args) { Deque deque = new ArrayDeque(5); deque.add(1); deque.add(2); deque.add(3); deque.add(5); deque.add(8); deque.add(14); deque.add(22); System.out.println("Number = " + number); } } |
Output
Number = [1, 2, 3, 5, 8, 14, 22]
How to create a Deque instance?
We can create Deque instance as below
Deque dequeX = new LinkedList();
Deque dequeY = new ArrayDeque();
Find whether element exists in deque
deque.contains(“java”); // This method will return true if the element present or it will will return false
Adding an element:
Deque API provides below types of methods to add the objects from the queue.
Deque deque=new ArrayDeque();
deque.add(“Java”);
deque.addFirst(“Spring”);
deque.addLast(“Struts”);
or
deque.offer(“java”);
deque.offerFirst(“Spring”);
deque.offerLast(“Struts”);
or
deque.push(“Java”);
Lets see this with an example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
package com.j2eereference.coreJava; import java.util.ArrayDeque; import java.util.Deque; public class ArrayDequeDemo { public static void main(String[] args) { Deque deque = new ArrayDeque(5); deque.add(1); deque.add(2); deque.add(3); deque.add(5); deque.add(8); deque.add(14); deque.add(22); System.out.println("Number = " + deque); } } |
Output
Number = [1, 2, 3, 5, 8, 14, 22]
Removing an element:
Deque API provides below types of methods to delete the objects from the queue
deque.remove(“Java”);
deque.removeFirst(“Spring”);
deque.removeLast(“Struts”);
or
deque.poll(“Java”);
deque.pollFirst(“Spring”);
deque.pollLast(“Struts”);
or
deque.pop(“java”)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package com.j2eereference.coreJava; import java.util.Deque; import java.util.LinkedList; public class DequeDemo { public static void main(String[] args) { Deque deque = new LinkedList(); deque.add("Java"); deque.add("Spring"); deque.add("Struts"); deque.add("Hibernate"); deque.add("JSP"); deque.add("Servlet"); deque.remove("Servlet"); // Removes "Servlet" deque.pollFirst(); // Removes "Java" deque.pollLast(); // Removes "JSP" System.out.println("Item = " + deque); } } |
output
Item = [Spring, Struts, Hibernate]
Leave a Reply