1. Stack
- 후입 선출(Last In First Out) 자료구조
- 나중에 넣은 객체가 먼저 빠져나가는 자료구조
- Ex) JVM Stack Memory → Stack Memory에 저장된 변수는 나중에 저장된 것부터 제거됩니다.
Java Stack 기능
E push(E item) → 해당 객체를 스택에 넣습니다.
E peek() → 스택의 맨 위 객체(first)를 반환합니다. (객체를 스택에서 제거 X)
E pop() → 스택의 맨 위 객체(first)를 반환합니다. (객체를 스택에서 제거 O)
// LIFO Stack
Stack<Integer> stack = new Stack<>();
// push
stack.push(1);
stack.push(2);
stack.push(3);
// peek
System.out.println(stack.peek()); // 3
// pop Loop(stack 은 Vector를 상속받기 때문에 List 인터페이스의 기능을 사용할 수 있습니다.)
while (!stack.isEmpty()) {
System.out.println(stack.pop()); // 3 2 1
}
2. Queue
- 선입선출(First In First Out) 자료구조
- 먼저 넣은 객체가 먼저 빠져나가는 구조
- Ex) Thread Pool(ExecutorService) 작업 큐 → 먼저 들어온 작업부터 처리합니다.
- Queue 인터페이스를 구현한 클래스는 LinkedList입니다.
Java Queue 기능
boolean offer(E e) → 해당 객체를 넣습니다.
E peek() → 큐에서 먼저 들어온 객체를 반환합니다. (큐에서 삭제 X)
E poll() → 큐에서 먼저 들어온 객체를 반환합니다. (큐에서 삭제 O)
// FIFO Queue
Queue<Integer> queue = new LinkedList();
// offer
queue.offer(1);
queue.offer(2);
queue.offer(3);
// peek
System.out.println(queue.peek()); // 1
// poll
while (!queue.isEmpty()) {
System.out.println(queue.poll()); // 1 2 3
}