일반적으로 데크(deck)라고 발음되는 데크(deque)는 양방향(double-ended) 큐입니다. double-ended queue는 양쪽 끝점에서 요소의 삽입 및 제거를 지원하는 선형(linear) 요소 모음입니다. Deque 인터페이스는 Stack과 Queue를 동시에 구현하기 때문에 Stack과 Queue보다 더 풍부한 추상(abstract) 데이터 유형입니다. Deque 인터페이스는 Deque 인스턴스의 양쪽 끝에 있는 요소에 액세스하는 메서드를 정의합니다. 요소를 삽입(insert), 제거(remove) 및 검사(examine)하는 방법이 제공됩니다. ArrayDeque 및 LinkedList와 같은 미리 정의된 클래스는 Deque 인터페이스를 구현합니다.
Deque 인터페이스는 후입선출(last-in-first-out) 스택과 선입선출(first-in-first-out) 큐 모두로 사용될 수 있습니다. Deque 인터페이스에 제공된 메소드는 세 부분으로 나뉩니다.
addfirst 및 offerFirst 메소드는 Deque 인스턴스의 시작 부분에 요소를 삽입합니다. addLast 및 offerLast 메소드는 Deque 인스턴스의 끝에 요소를 삽입합니다. Deque 인스턴스의 용량(capacity)이 제한(restricted)되는 경우 addFirst는 용량이 가득 찼을 때 예외를 발생시키지 못할 수 있으므로 선호되는 메소드는 offerFirst 및 offerLast입니다.
removeFirst 및 pollFirst 메소드는 Deque 인스턴스의 시작 부분에서 요소를 제거합니다. removeLast 및 pollLast 메소드는 끝에서 요소를 제거합니다. Deque가 비어 있으면 pollFirst 및 pollLast 메소드는 null을 반환하는 반면, removeFirst 및 removeLast 메소드는 예외를 발생시킵니다.
getFirst 및 peekFirst 메소드는 Deque 인스턴스의 첫 번째 요소를 검색합니다. 이러한 메서드는 Deque 인스턴스에서 값을 제거하지 않습니다. 마찬가지로 getLast 및 peekLast 메소드는 마지막 요소를 검색합니다. deque 인스턴스가 비어 있으면 getFirst 및 getLast 메서드는 예외를 발생시키는 반면, peekFirst 및 peekLast 메서드는 NULL을 반환합니다.
Deque 요소의 삽입, 제거 및 검색을 위한 12가지 방법은 다음 표에 요약되어 있습니다.
| Type of Operation | First Element (Beginning of the Deque instance) |
Last Element (End of the Deque instance) |
|---|---|---|
| Insert | addFirst(e)offerFirst(e) |
addLast(e)offerLast(e) |
| Remove | removeFirst()pollFirst() |
removeLast()pollLast() |
| Examine | getFirst()peekFirst() |
getLast()peekLast() |