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
}
}