1. 개념
앞으로 넣을 수 있고 뺄 수 있으면서, 뒤로도 넣을 수 있고 뺄 수 있는 자료구조
2. 특징
- 스택과 큐의 특징을 모두 가질 수 있음
3. 자바에서 구현
덱의 여러 연산을 모아 놓은 인터페이스가 있고, 이 인터페이스를 실제로 구현한 여러 클래스가 있다. ArrayDeque, LinkedBlockingDeque, ConcurrentLinkedDeque, LinkedList 가 클래스의 종류며 구현 방법에 따라 종류가 나뉜다.
1) ArrayDeque
- array로 구현
- 내부 배열의 크기가 resizable 함
- 용량 제한이 없음, 기본 크기를 16으로 하고 용량 넘어가면 2배씩 증가시킴
- Thread-Safe하지 않아서 멀티 쓰레드 환경에서는 문제가 있음
- null 추가 불가
- 끝에 삽입, 삭제만 할 경우 사용하면 효율적
2) LinkedList
- 양방향 연결 리스트로 구현
- null 추가 가능
- 가리키는 링크가 필요하기 때문에 ArrayDeque보다 더 많은 메모리를 소모
- 순회하면서 삽입, 삭제 할 경우 사용하면 효율적
4. 자바에서 연산
1) addFirst()
덱의 앞쪽에 삽입
2) removeFirst()
덱의 앞쪽에 있는 걸 삭제한 후 삭제한 결과를 리턴. 만약 비어있는 덱에서 삭제를 했을 경우 예외 발생
3) addLast()
덱의 맨 뒤에 삽입
4) removeLast()
덱의 맨 뒤에 있는 걸 삭제한 후 삭제한 결과를 리턴. 만약 비어있는 덱에서 삭제를 했을 경우 예외 발생
5) gerFirst()
덱의 맨 앞에 있는 걸 제거하지 않은 채 리턴. 비어 있는 상태에서 이 메서드를 실행하면 예외 발생
6) peekFirst()
덱의 맨 앞에 있는 걸 제거하지 않은 채 리턴. 비어 있는 상태에서 이 메서드를 실행하면 null 리턴
7) getLast()
덱의 맨 뒤에 있는 걸 제거하지 않은 채 리턴. 비어 있는 상태에서 이 메서드를 실행하면 예외 발생
8) peekLast()
덱의 맨 뒤에 있는 걸 제거하지 않은 채 리턴. 비어 있는 상태에서 이 메서드를 실행하면 null 리턴
9) isEmpty()
덱이 비어있으면 true, 비어 있지 않으면 false를 리턴
+ 스택대신 queue를 사용해야 하는 이유
https://crazykim2.tistory.com/581
[JAVA] Deque/ArrayDeque(데크) 개념 및 사용법 정리
안녕하세요 이번 포스팅에서는 Deque와 ArrayDeque에 대해서 알아보겠습니다 목차 Deque란? Deque 선언하기 Deque 값 추가하기 Deque 값 삭제하기 Deque 크기 구하기 Deque 값 출력하기 Deque란? Deque란 Double-Ended
crazykim2.tistory.com
https://tech-monster.tistory.com/159
Deque, LinkedList 와 ArrayDeque
이번 시간에는 Deque 인터페이스를 알아보고 이의 구현체인 LinkedList와 ArrayDeque를 알아보고 비교할 것이다. 1. Deque란? 원소의 추가와 삭제를 둘 다 끝부분에서 지원하는 선형 collection. Deque라는 이
tech-monster.tistory.com
[자료구조] Java의 LinkedList와 ArrayDeque
요즘 Do it 알고리즘 코딩테스트 - 자바편이란 책으로 알고리즘 공부를 하고있다. 책의 슬라이딩 윈도우 챕터에 나오는 백준 11003번 문제 - 최소값 찾기를 풀이대로 푸는데 문제가 발생했다. 문제
velog.io
'자료구조' 카테고리의 다른 글
[자료구조] 그래프 (0) | 2023.04.19 |
---|---|
[자료구조] 그래프의 표현 (0) | 2023.04.14 |
[자료구조] 우선순위 큐(Priority Queue) (0) | 2023.03.26 |
[자료구조] 큐(Queue) (0) | 2023.03.26 |
[자료구조] 스택(Stack) (0) | 2023.01.26 |