• Skip to primary navigation
  • Skip to content
  • Skip to primary sidebar
  • Skip to footer
  • Core Java
  • Design Patterns
  • JSP
  • Servlets
  • Building Tools
  • jQuery
  • Spring
  • Hibernate
  • Mongo DB
  • More
    • HTML
    • SCJP
    • AJAX
    • UML
    • Struts
    • J2EE
    • Testing
    • Angular JS

J2EE Reference

  • Home
  • About Us
    • Java Learning Centers
  • Contact Us

Deque in Java Collection

July 9, 2012 By j2eereference Leave a Comment

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]

Related Posts

  • UncaughtExceptionHandler in java
  • How to generate and resolve OutOfMemoryError?
  • Difference between Spring’s Singleton scope & Singleton Design pattern
  • How to stop a thread?
  • Interrupting a thread in java
  • What is ThreadLocal in Java ?
  • ArrayList custom Implementation
  • Difference between volatile and synchronized keyword?
  • How to write thread safe code?
  • How to avoid deadlock in java ?

Filed Under: Core Java

Reader Interactions

Leave a Reply Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Primary Sidebar

FOLLOW US ONLINE

  • View J2eereference-166104970118637’s profile on Facebook
  • View j2eereference’s profile on Twitter
  • View j2eereference’s profile on LinkedIn

Subscribe by email

Recent posts

  • Java Buzzwords
  • Anonymous Inner Class in Java
  • Network Programming – java.net Package
  • Java Regular Expressions
  • Method Local Inner Class in Java
  • URL Processing in Java
  • Iterator Design Pattern Implementation using Java
  • Strategy Design Pattern Implementation using Java
  • Decorator Design Pattern
  • Adapter Design Pattern Implementation using Java
  • JSF Composite Components
  • JSF UI Components
  • What is JavaServer Faces (JSF)?
  • GOF Design Patterns
  • History and Need for Design Patterns

Footer

Core Java
Design Patterns
JSP
Servlets
HTML
Building Tools
AJAX
SCJP
jQuery
Testing
Spring
UML
Struts
Java Centers
Java Training
Home
About Us
Contact Us
Copyright © j2eereference.com. All right reserved.