New types in Collections Framework
- Deque
- BlockingDeque
- NavigableMap
- NavigableSet
The Deque Interface
Deque [pronounced "deck"] is short for double-ended queue.
java.util.Deque is a subinterface of Queue.
A deque is a queue that supports element insertion and removal at both ends.
You can also restrict the maximum number of elements in a Deque.
Deque can also be used as a stack.
Methods are available for adding, removing, and inspecting elements.
The ArrayDeque class is an implementation of Deque that does not impose capacity restriction.
ArrayDeque always grows as necessary to support new elements.
Using Deque as a stack
import java.util.ArrayDeque;
import java.util.Deque;
public class IntegerStack {
private Deque<Integer> data = new ArrayDeque<Integer>();
public void push(Integer element) {
data.addFirst(element);
}
public Integer pop() {
return data.removeFirst();
}
public Integer peek() {
return data.peekFirst();
}
public String toString() {
return data.toString();
}
public static void main(String[] args) {
IntegerStack stack = new IntegerStack();
for (int i = 0; i < 5; i++) {
stack.push(i);
}
System.out.println("After pushing 5 elements: " + stack);
int m = stack.pop();
System.out.println("Popped element = " + m);
System.out.println("After popping 1 element : " + stack);
int n = stack.peek();
System.out.println("Peeked element = " + n);
System.out.println("After peeking 1 element : " + stack);
}
}
After pushing 5 elements: [4, 3, 2, 1, 0]
Popped element = 4
After popping 1 element : [3, 2, 1, 0]
Peeked element = 3
After peeking 1 element : [3, 2, 1, 0]