Stack
- 쌓다, 더미 → 데이터를 쌓는 자료 구조
- Last In First Out(LIFO, 후입선출)
- 한 쪽 끝에서만 데이터를 넣고 뺄 수 있다.
대표 메서드
import java.util.Stack;
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
Integer topElement = stack.pop();
stack.peek();
boolean isEmpty = stack.empty();
Integer searchedElement = stack.search(1);
int stackSize = stack.size();
int index = stack.indexOf(1);
boolean doesExist = stack.contains(2);
예제
- 인터럽트 처리
- 수식 계산
- Depth First Search(DFS, 깊이 우선 탐색)
- 재귀 함수
Queue
- 줄, 대기 행렬 → 데이터가 줄을 지어 순서대로 처리되는 자료구조
- First In First Out(FIFO, 선입선출)
- front는 삭제 연산만, rear는 삽입 연산만 수행
대표 메서드
import java.util.Queue;
import java.util.LinkedList;
Queue<Integer> queue = new LinkedList<>();
boolean isAddSuccess = queue.add(1);
boolean isOfferSuccess = queue.offer(2);
Integer polledElement = queue.poll();
Integer removedElement = queue.remove();
Integer frontElement = queue.peek();
예제
- Breadth First Search(BFS, 너비 우선 탐색)
- 컴퓨터 구조의 buffer
Priority Queue
- 큐에 들어온 순서대로 데이터가 나가는 것이 아니라 우선순위를 지정하여 순위가 높은 원소가 먼저 나가는 자료구조
- heap(이진트리 구조) 사용
Queue<Integer> priorityQueue = new PriorityQueue<>();
Queue<Integer> reversePriorityQueue = new PriorityQueue<>(Collections.reverseOrder());