Information Security Study
Deque 개념 및 예제 본문
Deque
- Queue의 형태에서 양방향 삽입, 반환할 수 있는 자료구조
- LIFO, FIFO와 같이 동작하지 않는다.
- 양방향 끝이 아닌 중간 데이터의 삽입, 삭제 불가능
- 선언 시 LinkedList 또는 ArrayDeque 사용
삽입 연산
- add(): 마지막에 원소 삽입
- addFirst(): 맨 앞에 원소 삽입
- addLast(): 마지막에 원소 삽입
- offer(): 마지막에 원소 삽입
- offerFirst(): 맨 앞에 원소 삽입
- offerLast(): 마지막에 원소 삽입
삭제 연산
- remove(): 맨 앞의 원소 반환 및 제거
- removeFist(): remove()와 상동
- removeLast(): 마지막 원소 반환 및 제거
- poll: 맨 앞의 원소 반환 및 제거
- pollLast(): 마지막 원소 반환 및 제거
삽입은 기본적으로 뒤에서 이뤄지고
삭제는 앞에서 수행한다.
값 확인
- getFirst(): 맨 앞의 원소 출력
- getLast(): 마지막 원소 출력
- peek(): 맨 앞의 원소 출력
- peekFirst(): 맨 앞의 원소 출력
- peekLast(): 마지막 원소 출력
Deque 예제
import java.util.Deque;
import java.util.ArrayDeque;
public class DequeExample {
public static void main(String[] args) {
// Deque를 ArrayDeque로 구현
Deque<String> deque = new ArrayDeque<>();
// 요소 추가
deque.add("First");
deque.addLast("Last"); // 큐의 끝에 추가
deque.addFirst("New First"); // 큐의 앞에 추가
// 큐의 요소 출력
System.out.println("Deque: " + deque);
// 큐의 앞에서 요소 제거
String removedFirst = deque.removeFirst();
System.out.println("Removed First: " + removedFirst);
// 큐의 뒤에서 요소 제거
String removedLast = deque.removeLast();
System.out.println("Removed Last: " + removedLast);
// 현재 큐 상태 출력
System.out.println("Deque after removals: " + deque);
// 큐의 앞 요소 확인 (삭제하지 않음)
String peekFirst = deque.peekFirst();
System.out.println("Peek First: " + peekFirst);
// 큐의 뒤 요소 확인 (삭제하지 않음)
String peekLast = deque.peekLast();
System.out.println("Peek Last: " + peekLast);
}
}
출력 결과
Deque: [New First, First, Last]
Removed First: New First
Removed Last: Last
Deque after removals: [First]
Peek First: First
Peek Last: First
'Programming > JAVA' 카테고리의 다른 글
[프로그래머스] 폰켓몬(level 1, HashSet) (1) | 2024.09.17 |
---|---|
해시맵 개념과 예제 (0) | 2024.09.17 |
우선순위 큐 개념과 예제 (0) | 2024.09.17 |
[프로그래머스] 기능개발(level 2, Queue) (0) | 2024.09.10 |
[프로그래머스] 올바른 괄호(level2, Stack) (0) | 2024.09.10 |