..
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. 주요 특징
- 고성능: 내부적으로 배열을 사용하며, 가득 찰 경우 크기를 2배씩 늘립니다.
- 효율적 관리:
head와tail이라는 두 개의 포인터를 유지하여 양 끝단의 처리를 O(1) 시간에 해결합니다. - 제약 사항:
Null요소를 저장할 수 없습니다.
4. 오퍼레이션 비교
기능은 같지만 예외 처리 방식에 따라 두 종류의 메소드가 존재합니다.
| 작업 | 예외 발생 메소드 | 특수값(null/false) 반환 메소드 |
|---|---|---|
| 앞에 추가 | addFirst(e) |
offerFirst(e) |
| 앞에서 제거 | removeFirst() |
pollFirst() |
| 뒤에 추가 | addLast(e) |
offerLast(e) |
| 뒤에서 제거 | removeLast() |
pollLast() |
자바에서 스택이나 큐 기능을 구현해야 한다면, 고민하지 말고 ArrayDeque를 사용하세요. 가장 현대적이고 빠른 대안입니다.