- 배열 기반 링 버퍼로 덱 자료구조를 구현
java.util.Stack
기반 스택,java.util.LinkedList
기반 큐보다 실행 속도가 빠름
: 내부 코드에서는 저장 위치에 관계없이 인덱스를 사용해서 덱의 현재 머리/꼬리에 바로 접근 가능하기 때문
(어디까지나 내부 구현 코드에서만 인덱스를 통해 접근할 뿐,ArrayDeque
의 public 메서드를 사용하여 덱 자료구조의 특정 위치에 접근하는 것은 불가능함에 유의)
Object[] elements
: 덱의 본체가 되는 객체배열
int head
: 배열에서 덱의 머리가 되는 위치
int tail
: 배열에서 덱의 꼬리가 되는 위치
private static final int MAX_ARRAY_SIZE
: (확장 가능한) 덱의 저장 용량
ArrayDeque()
- 주어진 용량의 초기값만큼의 크기를 갖는 배열 덱을 생성(용량의 초기값은 16)
ArrayDeque(int numElements)
- 지정한 값만큼의 용량을 갖는 배열 덱을 생성
ArrayDeque(Collection c)
- 지정한 컬렉션에 저장된 데이터를 그대로 복사하여 저장한 배열 덱을 생성
void offerFirst(Object e)
- 덱의 맨 앞에 새로운 데이터를 추가
addFirst()
에 의해 구현됨
void addFirst(Object e)
- 덱의 맨 앞에 새로운 데이터를 추가하는 기능에 관한 핵심 코드를 구현한 메서드
- 덱에 더 이상 데이터를 저장하지 못할 경우, 덱의 용량을 기존의 1.5배로 증가시킨 후 저장
- 추가할 데이터를 지정하지 않은 상태에서 이 메서드를 호출할 시 Exception 발생
ArrayDeque
기반 스택 자료구조의push()
구현에 활용
void offerLast(Object e)
- 덱의 맨 뒤에 새로운 데이터를 추가
addLast()
에 의해 구현됨ArrayDeque
기반 큐 자료구조의offer()
구현에 활용
void addLast(Object e)
- 덱의 맨 뒤에 새로운 데이터를 추가하는 기능에 관한 핵심 코드를 구현한 메서드
- 더 이상 데이터를 저장하지 못할 경우, 덱의 용량을 기존의 1.5배로 증가시킨 후 저장
- 추가할 데이터를 지정하지 않은 상태에서 이 메서드를 호출할 시 Exception 발생
ArrayDeque
기반 큐 자료구조의add()
구현에 활용
private void grow()
- 기존 용량이 일정 수준 미만이면 기존 용량에서 +2, 그 이상이면 그 1.5배만큼 용량 증가
Object pollFirst()
- 덱의 맨 앞에 저장된 데이터를 삭제하는 기능에 관한 핵심 코드를 구현한 메서드
- 이 메서드의 실행이 종료되면 삭제된 데이터는 반환
- 빈 덱일 때 호출할 경우 Exception의 발생 없이 null을 반환
ArrayDeque
기반 큐 자료구조의poll()
구현에 활용
Object removeFirst()
pollFirst()
에 의해 구현된 메서드- 빈 덱일 때 이 메서드를 호출할 경우 Exception 발생
ArrayDeque
기반 스택 자료구조의pop()
구현에 활용
Object pollLast()
- 덱의 맨 뒤에 저장된 데이터를 삭제하는 기능에 관한 핵심 코드를 구현한 메서드
- 이 메서드의 실행이 종료되면 삭제된 데이터는 반환
- 빈 덱일 때 이 메서드를 호출하더라도 Exception 발생 없이 null을 반환
Object removeLast()
pollLast()
를 활용하여 구현- 빈 덱일 때 이 메서드를 호출할 경우 Exception 발생
Object peekFirst()
- 덱의 맨 앞에 저장된 데이터를 반환하는 기능의 핵심 코드를 구현한 메서드
ArrayDeque
기반 큐/스택 자료구조의peek()
구현에 활용- 빈 덱에서 호출할 경우 null을 반환
Object getFirst()
peekFirst()
를 활용하여 구현- 빈 덱에서 호출할 경우 Exception 발생
ArrayDeque
기반 큐 자료구조의element()
구현에 활용
Object peekLast()
- 덱의 맨 뒤에 저장된 데이터를 반환하는 기능의 핵심 코드를 구현한 메서드
- 빈 덱에서 호출할 경우 null을 반환
Object getLast()
peekLast()
를 활용하여 구현- 빈 덱에서 호출할 경우 Exception 발생