[Deque 00] Deque란? (with 자료구조 - 선형구조)

Deque이란?

A linear collection that supports element insertion and removal at both ends. The name deque is short for "double ended queue" and is usually pronounced "deck"

 

"double ended queue"의 줄임말로 앞뒤로 데이터를 넣고 뺄 수 있는 선형 자료구조

 

  • (FIFO, First-In-First-Out), 스택(LIFO, Last-In-First-Out) 모두 될 수 있다.

 

 

 

Deque 인터페이스를 구현한 클래스

Deque<E> queue = new ArrayDeque<>();
Deque<E> queue = new ConcurrentLinkedDeque<>();
Deque<E> queue = new LinkedBlockingDeque<>();
Deque<E> queue = new LinkedList<>();

 

 

 

Deque에 데이터 삽입

// Head에 삽입
// Stack
deque.addFirst(E e); // 용량 초과 시 throw Exception
deque.offerFirst(E e); // 삽입 성공 시 return true, 용량 초과 시 throw Exception
deque.push(E e); // 용량 초과 시 throw Exception

// Tail에 삽입
// Queue
deque.add(E e); // 삽입 성공 시 return true, 용량 초과 시 throw Exception
deque.addLast(E e); // 용량 초과 시 throw Exception
deque.offer(E e); // 삽입 성공 시 return true, 용량 초과 시 return false;
deque.offerLast(E e); // 삽입 성공 시 return true, 용량 초과 시 throw Exception

 

 

 

Deque에서 데이터 삭제

// Head 데이터 삭제
deque.poll(); // return head first element, 비어있으면 return null, pollFirst()와 동일
deque.pollFirst(); // return head first element, 비어있으면 return null
deque.pop(); // return head first element, 비어있으면 throws Exception, removeFirst()와 동일
deque.remove(); // return head first element, 비어있으면 throws Exception, 비어있을 때 예외 처리 하는 것만 poll과 다름.
deque.removeFirst(); // return head first element, 비어있으면 throws Exception

// Tail 데이터 삭제
deque.pollLast(); // return tail first element, 비어있으면 return null
deque.removeLast(); // return tail first element, 비어있으면 throws Exception

 

 

 

Deque에서 특정 데이터 삭제

// 앞에서부터 o와 동일한 데이터를 찾고 그 값을 삭제
deque.removeFirstOccurrence(Object o); // 성공 시 return true, remove(Object o)와 동일
deque.remove(Object o); // 성공 시 return true

// 뒤에서부터 o와 동일한 데이터를 찾고 그 값을 삭제
deque.removeLastOccurrence(Object o); // 성공 시 return true

 

 

 

Deque에서 데이터 조회

- 제일 앞이나 끝에 있는 데이터를 단순 조회만 한다.

// Head
deque.getFirst(); // 비어있으면 throws Exception
deque.peek(); // 비어있으면 return null, peekFirst()와 동일
deque.peekFirst(); // 비어있으면 return null

// Tail
deque.getLast(); // 비어있으면 throws Exception
deque.peekLast(); // 비어있으면 return null

 

 

참고 자료

https://docs.oracle.com/javase/8/docs/api/java/util/Deque.html

https://hbase.tistory.com/128

'Java > 자료구조' 카테고리의 다른 글

시간 복잡도 기초  (0) 2023.08.08
[Deque 01] Stack말고 ArrayDeque  (0) 2023.07.02