ArrayDeque — 확장 가능한 배열 기반 deque
ArrayDeque — 확장 가능한 배열 기반 deque
Deque 인터페이스의 확장 가능한 배열(resizable-array) 구현 클래스예요.
본문
시그니처
public class ArrayDeque<E> extends AbstractCollection<E>
implements Deque<E>, Cloneable, Serializable
타입 매개변수: E — 이 deque에 담긴 요소의 타입.
설명
Deque 인터페이스의 확장 가능한 배열 구현이에요. 배열 deque는 용량 제한이 없어서 사용을 지원하기 위해 필요에 따라 커져요. 스레드 안전하지 않으며, 외부 동기화가 없으면 여러 스레드의 동시 접근을 지원하지 않아요. null 요소는 금지돼요.
이 클래스는 스택으로 사용할 때는 Stack보다, 큐로 사용할 때는 LinkedList보다 빠를 가능성이 커요. 대부분의 ArrayDeque 연산은 분할 상환 상수 시간(amortized constant time)으로 실행돼요. remove, removeFirstOccurrence, removeLastOccurrence, contains, iterator.remove(), 그리고 일괄(bulk) 연산 같은 예외는 선형 시간으로 실행돼요.
이 클래스의 iterator 메서드가 반환하는 iterator는 fail-fast예요. iterator를 만든 후 deque가 iterator 자신의 remove 메서드를 통한 방법 외에 어떤 식으로든 수정되면, iterator는 일반적으로 ConcurrentModificationException을 던져요. fail-fast 동작은 비동기 동시 수정이 있을 때 어떤 하드 보장도 하기 어려우므로 보장할 수 없다는 점을 참고하세요. fail-fast iterator는 최선을 다해 ConcurrentModificationException을 던져요.
주요 메서드
addFirst(E e)/addLast(E e)— 지정한 요소를 이 deque의 앞 / 뒤에 삽입해요.offerFirst(E e)/offerLast(E e)— 지정한 요소를 이 deque의 앞 / 뒤에 삽입해요.removeFirst()/removeLast()— 이 deque의 첫 번째 / 마지막 요소를 검색·제거해요.getFirst()/getLast()— 이 deque의 첫 번째 / 마지막 요소를 검색하되 제거하지 않아요.pollFirst()/pollLast()— 이 deque의 첫 번째 / 마지막 요소를 검색·제거하거나, 비어 있으면null을 반환해요.peekFirst()/peekLast()— 이 deque의 첫 번째 / 마지막 요소를 검색하되 제거하지 않거나, 비어 있으면null을 반환해요.push(E e)— 요소를 이 deque의 앞에 넣어요 (스택 연산).pop()— 이 deque에서 맨 앞의 요소를 꺼내요 (스택 연산).size()— 이 deque의 요소 수를 반환해요.