Deque(덱/ 데크)
- Doubly-Ended Queue의 줄임말로 Stack과 Queue를 합친 형태이다.
- 양쪽에서 삽입과 삭제가 가능한 자료구조이다.
- 용도에 맞게 일부 기능을 제한하여 변경이 가능하다.
입력 제한 데크(Scroll)
- 한쪽의 입력을 제한한다.
출력 제한 데크(Shelf)
- 한쪽의 출력을 제한한다.
*ArrayDeque, LinkedBlockingDeque, ConcurrentLinkedDeque, LinkedList등의 클래스가 있다.
Deque 값 추가
addFirst(), offerFirst()
덱의 앞쪽에 엘리먼트를 삽입한다. addFirst()는 용량 초과 시 예외(Exception)가 발생하고 offerFirst()는 용량이 있을 경우엔 true, 용량 초과 시 false를 리턴한다.
addLast(), add(), offerLast()
덱의 마지막에 엘리먼트를 삽입한다. addLast()는 용량 초과시 예외(Exception)발생, offerFirst()는 용량이 있을 경우엔 true, 용량 초과 시 false를 리턴한다.
Deque 값 제거
removeFirst(), remove(), poll(), pollFrist()
Deque의 앞쪽에서 데이터를 꺼낸다. remove는 덱이 비어있을 경우 예외를 발생시키고, poll은 null을 리턴한다.
removeLast(), pollLast()
Deque의 뒷쪽에서 데이터를 꺼낸다. remove는 덱이 비어있을 경우 예외를 발생시키고, poll은 null을 리턴한다.
*removeFirstOccurrence(), removeLastOccurrence()
removeFirstOccurrence()는 덱의 앞쪽에서 인자와 같은 엘리먼트를 찾아 제거하고 removeLastOccurrence()는 덱의 뒷쪽에서 인자와 같은 엘리먼트를 찾아 제거한다. 인자와 같은 엘리먼트가 덱 안에 없다면 아무 일도 일어나지 않는다.
Deque 값 확인
getFirst(), peekFirst(), peek()
Deque 맨 앞쪽의 엘리먼트를 리턴한다. get으로 시작하는 메소드는 덱이 비어있을 때 예외를 발생시키고, peek으로 시작하는 메소드는 null을 리턴한다.
getLast(), peekLast()
Deque의 가장 마지막에 있는 엘리먼트를 리턴한다. get으로 시작하면 덱이 비어있을 때 예외 발생, peek 으로 시작하면 null을 리턴한다.
*위의 메소드들 모두 값을 확인만 할 뿐 제거는 하지 않는다.
contain()
특정 데이터가 Deque에 있는지 확인한다.
size()
Deque의 엘리먼트 개수를 알려준다.