PHpullh
학습 라이브러리/Java/Deque 인터페이스 활용

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();
    }
}

학습 팁

ArrayDequeStack 클래스보다 빠르고, LinkedList보다 메모리 효율적입니다. 스택/큐가 필요하면 ArrayDeque를 쓰세요.

주의할 점

ArrayDequenull을 허용하지 않습니다. null이 필요하면 LinkedList를 사용하세요.

자주 묻는 질문

Deque 인터페이스 활용란 무엇인가요?

Deque 를 스택과 큐로 활용하는 방법입니다.

Deque 인터페이스 활용 학습 시 주의할 점은 무엇인가요?

ArrayDeque 는 null 을 허용하지 않습니다. null이 필요하면 LinkedList 를 사용하세요.

Continue Learning

Java 학습을 이어가세요

총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.