
ArrayDeque는 인터페이스Deque를 구현한 클래스로 내부에서는 요소들을 동적 배열에 저장하는데 이를 원형 큐 (Circular Queue)구조를 사용하여 구현하였다. 원형 큐에 대한 자세한 설명은 생략한다.
ArrayDeque는 원형 큐 구조를 이용해 구현하여 삽입 / 삭제 / 탐색 측면에서 성능이 좋다. 다만 내부 배열이 꽉 찰 경우 기존 배열의 크기를 2배로 늘린 새로운 배열을 생성하고 거기에 기존의 요소들을 모두 복사하는 작업을 수행한다. 따라서 배열 크기 조정이 빈번하게 이루어진다면 성능저하가 발생할 수 있다.
ArrayDeque 클래스는 Deque인터페이스의 메서드를 구현했을뿐 특별히 추가된 메서드는 없다.
반환타입이 boolean인 메서드들은 작업에 성공하거나 사실이면 true, 아니면 false를 반환한다.
| 메서드 | 기능 |
|---|---|
| ArrayDeque() | 초기 용량이 16인 빈 ArrayDeque를 생성 |
| ArrayDeque(int numElements) | 지정된 초기용량을 갖는 빈ArrayDeque를 생성 |
| ArrayDeque(Collection c) | 지정된 컬렉션(c)의 요소를 포함하는 ArrayDeque를 생성 |
| 메서드 | 기능 |
|---|---|
| boolean add(Object o) boolean addAll(Collection c) | 지정된 객체(o) 또는 Collection(c)의 객체들을 ArrayDeque에 추가. add(Object o) 사용 시 저장공간이 부족하면 IllegalStateException 발생 |
| 메서드 | 기능 |
|---|---|
| boolean contains(Object o) boolean containsAll(Collection c) | 지정된 객체(o) 또는 Collection(c)의 객체들이 포함되어 있는지 확인. |
| 메서드 | 기능 |
|---|---|
| boolean remove(Object o) boolean removeAll(Collection c) | 지정된 객체(o) 또는 Collection(c)의 객체들을 삭제. |
| boolean retainAll(Collection c) | 지정된 Collection에 포함된 객체만을 남기고, 다른 객체들은 ArrayDeque에서 삭제 집합의 교집합 개념과 유사함. |
| void clear() | ArrayDeque의 모든 객체를 삭제 |
다음의 메서드는 예외를 발생시키는 메서드이다.
| 메서드 | 기능 |
|---|---|
| boolean add(Object o) | 지정된 객체를 ArrayDeque에 추가. 저장공간이 부족하면 IllegalStateException 발생 |
| Object remove() | ArrayDeque에서 첫번째 객체를 꺼내 반환. 비어있으면 NoSuchElementException 발생 |
| Object element() | 삭제없이 첫번째 요소를 읽음. 비어있으면 NoSuchElementException 발생 |
다음의 메서드는 예외를 발생시키지 않는 메서드이다.
| 메서드 | 기능 |
|---|---|
| boolean offer(Object o) | ArrayDeque에 객체를 저장 |
| Object poll() | ArrayDeque에서 첫번째 객체를 꺼내서 반환 비어있으면 null을 반환 |
| Object peek() | 삭제없이 첫번째 요소를 읽음 비어있으면 null을 반환 |
| 메서드 | 기능 |
|---|---|
| void addFirst(Object o) | ArrayDeque의 맨 앞에 객체(o)를 추가 |
| void addLast(Object o) | ArrayDeque의 맨 뒤에 객체(o)를 추가 |
| boolean offerFirst(Object o) | ArrayDeque의 맨 앞에 객체(o)를 추가 |
| boolean offerLast(Object o) | ArrayDeque의 맨 뒤에 객체(o)를 추가 |
| 메서드 | 기능 |
|---|---|
| Object getFirst() | ArrayDeque의 맨 앞 요소를 반환 비어있으면 NoSuchElementException 발생 |
| Object getLast() | ArrayDeque의 맨 뒤 요소를 반환 비어있으면 NoSuchElementException 발생 |
| Object peekFirst() | ArrayDeque의 맨 앞 요소를 반환 비어있으면 null을 반환 |
| Object peekLast() | ArrayDeque의 맨 뒤 요소를 반환 비어있으면 null을 반환 |
| 메서드 | 기능 |
|---|---|
| Object removeFirst() | ArrayDeque의 맨 앞 요소를 꺼내서 반환 비어있으면 NoSuchElementException 발생 |
| Object removeLast() | ArrayDeque의 맨 뒤 요소를 반환 비어있으면 NoSuchElementException 발생 |
| Object PollFirst() | ArrayDeque의 맨 앞 요소를 꺼내서 반환 비어있으면 null을 반환 |
| Object PollLast() | ArrayDeque의 맨 뒤 요소를 꺼내서 반환 비어있으면 null을 반환 |
| boolean removeFirstOccurence(Object o) | ArrayDeque에서 앞에서부터 첫번째로 일치하는 객체를 제거 |
| boolean removeLastOccurence(Object o) | ArrayDeque에서 뒤에서부터 첫번째로 일치하는 객체를 제거 |
| 메서드 | 기능 |
|---|---|
| void push(Object o) | ArrayDeque의 맨 앞에 객체(o)를 추가 |
| Object pop() | ArrayDeque의 맨 앞 객체(o)를 꺼내서 반환 |
| 메서드 | 기능 |
|---|---|
| boolean equals(Object o) | 동일한 ArrayDeque인지 확인 |
| int hashCode() | ArrayDeque의 해시 코드를 반환 |
| 메서드 | 기능 |
|---|---|
| Iterator iterator() | 해당 ArrayDeque의 iterator를 얻어서 반환 |
| Iterator descendingIterator() | 역순으로 조회하기 위한 DescendingIterator를 반환 |
| 메서드 | 기능 |
|---|---|
| boolean isEmpty() | ArrayDeque가 비어있는지 확인 |
| int size() | ArrayDeque에 저장된 객체의 개수를 반환 |
| 메서드 | 기능 |
|---|---|
| Object[] toArray() | ArrayDeque에 저장된 객체를 객체배열(Object[])로 반환 |
| Object[] toArray(Object[] a) | 지정된 배열에 ArrayDeque의 객체를 저장해서 반환 |
자바의 정석 3판 (저자 : 남궁성)
Java Collections Framework Video Tutorial
오라클 Java 문서