Java - Deque

민찬홍·2023년 10월 19일

Java

목록 보기
24/31
post-thumbnail

🧩 Deque

Deque(데크, 덱)Double-Ended Queue의 줄임말로 큐의 양쪽으로 엘리먼트의 삽입과 삭제를 수행할 수 있는 자료구조를 의미한다.

Java에서의 Deque

자바에서의 덱은 인터페이스로 구현되었다. 덱 자료구조의 여러 연산들을 정의한 Deque 인터페이스가 있고 이를 구현한 ArrayDeque, LinkedBlockingDeque, ConcurrentLinkedDeque, LinkedList 등의 클래스가 있다.

Deque 인터페이스의 메소드는 위의 그림과 같다.

  • addFirst()
    : 덱의 앞쪽에 엘리먼트를 삽입한다. 용량 제한이 있는 경우, 용량을 초과하면 예외(Exception)가 발생한다.
  • offerFirst()
    : 덱의 앞쪽에 엘리먼트를 삽입한다. 정상적으로 삽입된 경우 true가 반환되며, 용량 제한에 걸리는 경우 false를 리턴한다.
  • addLast()
    : 덱의 마지막 쪽에 엘리먼트를 삽입한다. 용량 제한이 있는 덱의 경우, 용량 초과 시 예외가 발생한다.
  • add()
    : addLast()와 동일
  • offerLast()
    : 덱의 마지막 쪽에 엘리먼트를 삽입한다. 정상적으로 엘리먼트가 삽입된 경우 true가 반환되며, 용량 제한에 걸리는 경우 false를 반환한다.

  • removeFirst()
    : 덱의 앞쪽에서 엘리먼트 하나를 뽑아서 제거한 다음 해당 엘리먼트를 리턴한다. 덱이 비어있으면 예외가 발생한다.

  • pollFirst()
    : 덱의 앞쪽에서 엘리먼트 하나를 뽑아서 제거한 다음 해당 엘리먼트를 리턴한다. 덱이 비어있으면 null이 리턴된다.

  • removeLast()
    : 덱의 마지막 쪽에서 엘리먼트 하나를 뽑아서 제거한 다음 해당 엘리먼트를 리턴한다. 덱이 비어있으면 예외가 발생한다.

  • pollLast()
    : 덱의 마지막 쪽에서 엘리먼트 하나를 뽑아서 제거한 다음 해당 엘리먼트를 리턴한다. 덱이 비어있으면 null이 리턴된다.

  • remove()
    : removeFirst()와 동일

  • poll()
    : pollFirst와 동일

  • getFirst()
    : 덱의 앞쪽 엘리먼트 하나를 제거하지 않은 채 리턴한다. 덱이 비어있으면 예외가 발생한다.

  • peekFirst()
    : 덱의 앞쪽 엘리먼트 하나를 제거하지 않은 채 리턴한다. 덱이 비어있으면 null이 리턴된다.

  • getLast()
    : 덱의 마지막쪽 엘리먼트 하나를 제거하지 않은 채 리턴한다. 덱이 비어있으면 예외가 발생한다.

  • peekLast()
    : 덱의 마지막 엘리먼트 하나를 제거하지 않은 채 리턴한다. 덱이 비어있으면 null이 리턴된다.

  • peek()
    : peekFirst()와 동일

  • removeLastOccurrence(Object o)
    : 덱의 뒤쪽에서부터 탐색하여 입력한 Object o와 동일한 첫 엘리먼트를 제거한다. Object o와 같은 엘리먼트가 없으면 덱에 변경이 발생하지 않는다.

  • element()
    : removeFirst()와 동일

  • addAll(Collection <? extends E c)
    : 입력 받은 Collection의 모든 데이터를 덱의 뒤쪽에 삽입한다.

  • push()
    : 덱을 스택으로 사용할 때 쓰임, 스택처럼 요소 추가

  • pop()
    : 덱을 스택으로 사용할 때 쓰임, 맨 위에 있는 요소를 제거하고 반환

  • remove(Object o)
    : removeFirstOccurrence(Object o)와 동일

  • contain(Object o)
    : 덱에 Object o와 동일한 엘리먼트가 포함되어 있는지 확인

  • size()
    : 덱의 크기

  • iterator()
    : 덱의 앞쪽부터 순차적으로 실행되는 이터레이터(iterator)를 얻어옴

  • descendingIterator()
    : 덱의 뒤쪽부터 순차적으로 실행되는 이터레이터를 얻어옴

profile
백엔드 개발자를 꿈꿉니다

0개의 댓글