덱(deque, "deck"과 발음이 같음 ← double-ended queue)은 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료 구조의 한 형태이다.
두 개의 포인터를 사용하여, 양쪽에서 삭제와 삽입을 발생시킬 수 있다. 큐와 스택을 합친 형태로 생각할 수 있다.
addFirst() - 데크의 시작 부분에 지정된 요소를 추가합니다. 데크가 가득 차면 예외가 발생합니다.
addLast() - 데크의 끝에 지정된 요소를 추가합니다. 데크가 가득 차면 예외가 발생합니다.
offerFirst() - 데크의 시작 부분에 지정된 요소를 추가합니다. false데크가 가득 차면 반환합니다.
offerLast() - 데크 끝에 지정된 요소를 추가합니다. false데크가 가득 차면 반환합니다.
getFirst() - 데크의 첫 번째 요소를 반환합니다. 데크가 비어 있으면 예외를 반환합니다.
getLast() - 데크의 마지막 요소를 반환합니다. 데크가 비어 있으면 예외를 반환합니다.
peekFirst() - 데크의 첫 번째 요소를 반환합니다. 데크가 비어 있으면 null을 반환합니다.
peekLast() - 데크의 마지막 요소를 반환합니다. 데크가 비어 있으면 null을 반환합니다.
removeFirst() - 데크의 첫 번째 요소를 반환하고 제거합니다. 데크가 비어 있으면 예외를 반환합니다.
removeLast() - 데크의 마지막 요소를 반환하고 제거합니다. 데크가 비어 있으면 예외를 반환합니다.
pollFirst() - 데크의 첫 번째 요소를 반환하고 제거합니다. 데크가 비어 있으면 null을 반환합니다.
pollLast () - 데크의 마지막 요소를 반환하고 제거합니다. 데크가 비어 있으면 null을 반환합니다.