💡자료구조 개념 정리

📘 후입선출 (LIFO : Last In First Out)
push() : 값 추가
pop() : 값 제거 (맨 위)
peek() : 맨 위 값 확인Stack<Integer> stack = new Stack<>();
stack.push(10);
stack.push(20);
stack.pop(); // 20
stack.peek(); // 10
📘 선입선출(FIFO : First In First Out)
offer() : 값 추가
poll() : 값 제거 (맨 앞)
peek() : 맨 앞 값 확인Queue<Integer> queue = new LinkedList<>();
queue.offer(10);
queue.offer(20);
queue.poll(); // 10
queue.peek(); // 20
📘 최대값 또는 최소값
Queue 와 차이점
기본 메서드
offer() : 값 넣기
poll() : 가장 작은 값 꺼내기
peek() : 가장 작은 값 확인만 하기 (꺼내지는 않음)
//기본적으로 오름차순
PriorityQueue<Integer> pq = new PriorityQueue<>();
pq.offer(5);
pq.offer(2);
pq.offer(8);
pq.poll(); // 2
pq.poll(); // 5
pq.poll(); // 8
//내림차순
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
📘 양쪽으로 삽입/삭제 가능한 큐
addFirst() : 앞에 추가
addLast() : 뒤에 추가
pollFirst(): 앞에서 제거
pollLast() : 뒤에서 제거Deque<Integer> deque = new ArrayDeque<>();
deque.addFirst(10);
deque.addLast(20);
deque.pollFirst(); // 10
deque.pollLast(); // 20| 자료구조 | 자바 클래스/인터페이스 |
|---|---|
| 스택 | Stack |
| 큐 | Queue (LinkedList, ArrayDeque) |
| 힙 (우선순위 큐) | PriorityQueue |
| 덱 (양방향 큐) | Deque (ArrayDeque) |