JAVA · 컬렉션
Deque 인터페이스 활용
Deque를 스택과 큐로 활용하는 방법입니다.
컬렉션중급DequeArrayDeque스택큐
핵심 설명
Deque를 스택과 큐로 활용하는 방법입니다.
Java code
import java.util.*;
public class DequeDemo {
public static void main(String[] args) {
// ArrayDeque — Stack과 Queue 대체
Deque<String> deque = new ArrayDeque<>();
// 스택으로 사용 (LIFO)
deque.push("A"); // addFirst
deque.push("B");
deque.push("C");
System.out.println(deque.pop()); // C (removeFirst)
System.out.println(deque.peek()); // B (peekFirst)
// 큐로 사용 (FIFO)
Deque<String> queue = new ArrayDeque<>();
queue.offer("1번"); // addLast
queue.offer("2번");
queue.offer("3번");
System.out.println(queue.poll()); // 1번 (removeFirst)
// 양쪽 모두 접근
deque.addFirst("앞");
deque.addLast("뒤");
System.out.println(deque.peekFirst()); // 앞
System.out.println(deque.peekLast()); // 뒤
// 실전: 괄호 검사
String expr = "({[]})";
boolean valid = isBalanced(expr);
System.out.println(expr + " 유효: " + valid);
}
static boolean isBalanced(String expr) {
Deque<Character> stack = new ArrayDeque<>();
for (char c : expr.toCharArray()) {
if ("({[".indexOf(c) >= 0) stack.push(c);
else if (")}]".indexOf(c) >= 0) {
if (stack.isEmpty()) return false;
char open = stack.pop();
if ((c == ')' && open != '(') ||
(c == '}' && open != '{') ||
(c == ']' && open != '[')) return false;
}
}
return stack.isEmpty();
}
}학습 팁
ArrayDeque는 Stack 클래스보다 빠르고, LinkedList보다 메모리 효율적입니다. 스택/큐가 필요하면 ArrayDeque를 쓰세요.
주의할 점
ArrayDeque는 null을 허용하지 않습니다. null이 필요하면 LinkedList를 사용하세요.
자주 묻는 질문
Deque 인터페이스 활용란 무엇인가요?
Deque 를 스택과 큐로 활용하는 방법입니다.
Deque 인터페이스 활용 학습 시 주의할 점은 무엇인가요?
ArrayDeque 는 null 을 허용하지 않습니다. null이 필요하면 LinkedList 를 사용하세요.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.