Stack

  • LIFO, 가장 나중에 넣은 요소가 가장 먼저 제거됨
  • 주요 메서드
    • push(E item) : 요소 삽입
    • pop() : 요소 제거 및 반환
    • peek() : 최상단 요소 확인 (제거 x)
    • isEmpty() : 스택이 비었는지 확인
  • 구현 방법
    • Stack<E> 클래스 사용
    • LinkedList / ArrayDeque
import java.util.Stack;
 
public class StackExample {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();
        
        stack.push(1);
        stack.push(2);
        stack.push(3);
        
        System.out.println(stack.pop());  // 3
        System.out.println(stack.peek()); // 2
        System.out.println(stack.isEmpty()); // false
    }
}

Queue

  • FIFO, 먼저 넣은 요소가 먼저 제거됨
  • 주요 메서드
    • offer(E item) : 요소 삽입
    • poll() : 요소 제거 및 반환
    • peek() : 첫번째 요소 확인(제거 x)
    • isEmpty : 큐가 비었는지 확인
  • 구현 방법
    • Queue<E> 인터페이스를 구현한 LinkedList / ArrayDeque
import java.util.Queue;
import java.util.LinkedList;
 
public class QueueExample {
    public static void main(String[] args) {
        Queue<Integer> queue = new LinkedList<>();
        
        queue.offer(1);
        queue.offer(2);
        queue.offer(3);
        
        System.out.println(queue.poll()); // 1
        System.out.println(queue.peek()); // 2
        System.out.println(queue.isEmpty()); // false
    }
}

Deque (Double-Ended Queue)

  • 양쪽 끝에서 삽입/삭제 가능
  • 주요 메서드
    • addFirst(E e), addLast(E e) : 앞/뒤에 요소 추가
    • removeFirst() , removeLast() : 앞/뒤에 요소 제거
    • getFirst(), getLast() : 앞/뒤 요소 확인(제거 x)
  • 구현 방법
    • Deque 인터페이스를 구현한 ArrayDeque 또는 LinkedList 사용
import java.util.Deque;
import java.util.ArrayDeque;
 
public class DequeExample {
    public static void main(String[] args) {
        Deque<Integer> deque = new ArrayDeque<>();
        
        deque.addFirst(1);
        deque.addLast(2);
        deque.addLast(3);
        
        System.out.println(deque.removeFirst()); // 1
        System.out.println(deque.removeLast());  // 3
        System.out.println(deque.getFirst());    // 2
    }
}