본문 바로가기
자료구조/선형 자료구조

[Java] Deque(덱/ 데크) 자료구조

by devnyang 2024. 2. 19.
반응형

Deque(덱/ 데크)


- Doubly-Ended Queue의 줄임말로 Stack과 Queue를 합친 형태이다.

- 양쪽에서 삽입과 삭제가 가능한 자료구조이다.

- 용도에 맞게 일부 기능을 제한하여 변경이 가능하다.

 

Deque

 

입력 제한 데크(Scroll) 

- 한쪽의 입력을 제한한다.

 

출력 제한 데크(Shelf)

- 한쪽의 출력을 제한한다.

 

*ArrayDeque, LinkedBlockingDeque, ConcurrentLinkedDeque, LinkedList등의 클래스가 있다.

 

Deque 값 추가


Deque 값 추가

addFirst(), offerFirst()

덱의 앞쪽에 엘리먼트를 삽입한다. addFirst()는 용량 초과 시 예외(Exception)가 발생하고 offerFirst()는 용량이 있을 경우엔 true, 용량 초과 시 false를 리턴한다.

 

addLast(), add(), offerLast()

덱의 마지막에 엘리먼트를 삽입한다. addLast()는 용량 초과시 예외(Exception)발생, offerFirst()는 용량이 있을 경우엔 true, 용량 초과 시 false를 리턴한다.

 

Deque 값 제거


Deque 값 제거

removeFirst(), remove(), poll(), pollFrist()

Deque의 앞쪽에서 데이터를 꺼낸다. remove는 덱이 비어있을 경우 예외를 발생시키고, poll은 null을 리턴한다.

 

removeLast(), pollLast()

Deque의 뒷쪽에서 데이터를 꺼낸다. remove는 덱이 비어있을 경우 예외를 발생시키고, poll은 null을 리턴한다.

 

*removeFirstOccurrence(), removeLastOccurrence()

removeFirstOccurrence()는 덱의 앞쪽에서 인자와 같은 엘리먼트를 찾아 제거하고 removeLastOccurrence()는 덱의 뒷쪽에서 인자와 같은 엘리먼트를 찾아 제거한다. 인자와 같은 엘리먼트가 덱 안에 없다면 아무 일도 일어나지 않는다.

 

Deque 값 확인


Deque 값 확인

 

getFirst(), peekFirst(), peek()

Deque 맨 앞쪽의 엘리먼트를 리턴한다. get으로 시작하는 메소드는 덱이 비어있을 때 예외를 발생시키고, peek으로 시작하는 메소드는 null을 리턴한다.

 

getLast(), peekLast()

Deque의 가장 마지막에 있는 엘리먼트를 리턴한다. get으로 시작하면 덱이 비어있을 때 예외 발생, peek 으로 시작하면 null을 리턴한다.

 

*위의 메소드들 모두 값을 확인만 할 뿐 제거는 하지 않는다.

 

contain()

특정 데이터가 Deque에 있는지 확인한다.

 

size()

Deque의 엘리먼트 개수를 알려준다.

반응형