Deque란 Double ended Queue로서 양단에서 삽입 삭제가 가능한 자료구조이다.
List 인터페이스를 LinkedList로 구현한다면 똑같은 Deque인데 어떤 차이점을 가지는가?
이제 구현체를 보자. Deque 구현시 보통 ArrayDeque, LinkedList 두 가지를 주로 사용한다. 또, 이들의 성능 차이를 알아보자.
Deque arrayDeck = new ArrayDeque<>();
LinkedList linkedListDeque = new LinkedList<>();
- 위 두 변수는 모두 Deque으로 사용 가능하다. 다만, 앞서 말했듯이 LinkedList는 원소 인덱스 접근이 가능하여 linkedListDeque.indexOf()를 사용 가능하지만 arrayDeck은 사용할 수 없다.
| Deque 구현 | ArrayDeque | LinkedList |
|---|---|---|
| 속도 | 빠르다 | 느리다 |
| 메모리 | 더 적게 사용 | 더 많이 사용 |
| 인덱스 접근 | 불가능 | 가능 |
자바 공식 문서: https://docs.oracle.com/javase/8/docs/api/java/util/Deque.html
성능 실험: http://javaqueue2010.blogspot.com/
List<Integer> ls = new LinkedList<>();
LinkedList<Integer> LinkedListDeque = new LinkedList();