Double-Ended Queue의 줄임말로 큐의 양쪽으로 엘리먼트의 삽입과 삭제를 수행할 수 있는 자료구조를 의미한다.
데크(Deque)는 어떤 쪽으로 입력하고 어떤 쪽으로 출력하느냐에 따라서 스택(Stack)으로 사용할 수도 있고, 큐(Queue)로도 사용할 수 있다.
특히 한쪽으로만 입력 가능하도록 설정한 데크를 스크롤(scroll)이라고 하며, 한쪽으로만 출력 가능하도록 설정한 데크를 셸프(shelf)라고 한다.
자바에서의 덱은 인터페이스로 구현되었다. 덱 자료구조의 여러 연산들을 정의한 Deque 인터페이스가 있고 이를 구현한 ArrayDeque, LinkedBlockingDeque, ConcurrentLinkedDeque, LinkedList 등의 클래스가 있다.
Deque< E > dq = new ArrayDeque< E >();
기존 Queue와 Stack의 메소드에서 First, Last를
pollFisrt( )
pollLast( )
peekFirst( )
peekLast( )