..

ArrayDeque: 스택과 큐를 동시에 잡는 효율형 자료구조

1. ArrayDeque란?

ArrayDeque (Array Double Ended Queue)는 양쪽 끝에서 요소를 추가하거나 제거할 수 있는 가변 크기 배열 기반의 자료구조입니다.

2. 왜 사용하는가?

자바에서 Stack 클래스는 구식이며 멀티스레드 환경을 고려한 동기화 비용 때문에 성능이 떨어집니다. 반면 ArrayDeque는 동기화를 지원하지 않는 대신, 단일 스레드 환경에서 Stack보다 강력하고 Queue보다 유연한 성능을 보여줍니다.

  • Stack으로 활용: push(), pop()을 통해 LIFO(Last-In-First-Out) 구현
  • Queue로 활용: add(), poll()을 통해 FIFO(First-In-First-Out) 구현

3. 주요 특징

  1. 고성능: 내부적으로 배열을 사용하며, 가득 찰 경우 크기를 2배씩 늘립니다.
  2. 효율적 관리: headtail이라는 두 개의 포인터를 유지하여 양 끝단의 처리를 O(1) 시간에 해결합니다.
  3. 제약 사항: Null 요소를 저장할 수 없습니다.

4. 오퍼레이션 비교

기능은 같지만 예외 처리 방식에 따라 두 종류의 메소드가 존재합니다.

작업 예외 발생 메소드 특수값(null/false) 반환 메소드
앞에 추가 addFirst(e) offerFirst(e)
앞에서 제거 removeFirst() pollFirst()
뒤에 추가 addLast(e) offerLast(e)
뒤에서 제거 removeLast() pollLast()

자바에서 스택이나 큐 기능을 구현해야 한다면, 고민하지 말고 ArrayDeque를 사용하세요. 가장 현대적이고 빠른 대안입니다.