본문 바로가기
컴퓨터 언어/JAVA

[JAVA] 덱(Deque) 클래스

by 테크케찰 2020. 7. 31.

덱(Deque)은 큐(Queue)와 비슷한 개념인데요, Deque이란 단어가 Double-Ended Queue의 줄임말로서 큐의 앞과 뒤에 모두 데이터의 삽입과 삭제가 가능한 데이터 저장 방식입니다.

덱 클래스의 선언은 다음과 같습니다.

Deque<Element> deque=new LinkedList<>();

덱의 주요 함수는 아래와 같습니다.

addFirst(Element e) // 덱의 앞쪽에 데이터 e를 추가
offerFirst(Element e) // 덱의 앞쪽에 데이터 e를 추가
addLast(Element e)// 덱의 뒷쪽에 데이터 e를 추가, add(Element e) 함수와 동일한 기능
offerLast(Elemet e) // 덱의 뒷쪽에 데이터 e를 추가, offer(Element e) 힘수와 동일한 기능
removeFirst() // 덱의 앞쪽의 데이터 삭제, 리턴, remove()함수와 동일한 기능
removeLast() // 덱의 뒷쪽의 데이터 삭제, 리턴
pollFirst() // 덱의 앞쪽의 데이터 삭제, 리턴, poll() 함수와 동일한 기능
pollLast() // 덱의 뒷쪽의 데이터 삭제, 리턴
getFirst() // 덱의 앞쪽 데이터를 삭제하지 않고 리턴
getLast() // 덱의 뒷쪽 데이터를 삭제하지 않고 리턴
peekFirst() // 덱의 앞쪽 데이터를 삭제하지 않고 리턴
peekLast() // 덱의 뒷쪽 데이터를 삭제하지 않고 리턴, peek()과 동일한 기능
size() // 덱의 크기 리턴

주요 함수들을 나열해보았는데요, 이외에도 여러 함수들이 있으니 필요하신 분들은 찾아보시면 좋을 것 같습니다.

함수들을 보시면, 비슷한 기능들을 가지고 있는 함수들이 있습니다.

add와 offer 함수 같은 경우는 값을 추가한다는 점에서 공통적이지만, add 함수는 용량을 초과하면 예외를 발생시키고, offer 함수 같은 경우는 false를 리턴한다는 점이 다릅니다.

remove 함수와 poll 함수 같은 경우는 값을 삭제한다는 점에서 같지만, 값이 비어있을 때 remove 함수는 예외를 발생시키고, poll 함수는 null을 리턴한다는 점이 다릅니다.

마지막으로 get과 peek 함수의 경우, 덱이 비어있을 때, get은 예외를 발생시키는 반면, peek는 null을 리턴시킨다는 점에서 다릅니다.