728x90
320x100
📌 PriorityQueue 란?
- 일반적인 Queue는 FIFO(First In, First Out) 형식의 자료구조입니다. (선입 선출)
- 우선순위 큐(Priority Queue)는 들어가는 순서와 상관없이 우선순위가 높은 데이터가 먼저 Out되는 자료구조
더보기
🍎 힙(Heap)이란?
➡️ 최솟값 또는 최댓값을 빠르게 찾아내기 위해 완전 이진트리 형태로 만들어진 자료구조
최대 힙 : 최대 값이 우선순위인 큐
최소 힙 : 최소 값이 우선순위인 큐
➡️ 최솟값 또는 최댓값을 빠르게 찾아내기 위해 완전 이진트리 형태로 만들어진 자료구조
최대 힙 : 최대 값이 우선순위인 큐
최소 힙 : 최소 값이 우선순위인 큐
📌 PriorityQueue 선언 방법
🥐 기본형 (낮은 숫자가 우선순위)
PriorityQueue<Integer> pQ = new PriorityQueue<>();
🥐 우선순위가 높은 숫자가 먼저 나옴 (큰 숫자)
PriorityQueue<Integer> pQ = new PriorityQueue<>(Collections.reverseOrder());
📌 PriorityQueue 메소드
add() | 우선순위 큐(Priority Queue)에 원소를 추가. Queue가 가득 찬 경우 Error 발생 |
offer() | 우선순위 큐(Priority Queue)에 원소를 추가. 값 추가 실패 시 false 반환 |
poll() | 우선순위 큐(Priority Queue)에서 첫 번째 값을 반환하고 제거. 비어있다면 null 반환 |
remove() | 우선순위 큐(Priority Queue)에서 첫 번째 값을 반환하고 제거. 비어있다면 Error 발생 |
isEmpty() | Queue가 비어있는지 확인. Queue가 비어있면 true, 그렇지 않으면 false 반환 |
clear() | 우선순위 큐(Priority Queue)를 초기화 |
size() | 우선순위 큐(Priority Queue)에 포함되어 있는 원소의 개수 반환(크기 반환) |
element() | 우선순위 큐(Priority Queue)에서 첫 번째 값을 반환하고 제거하지 않음 |
peek() | 우선순위 큐(Priority Queue)에서 첫 번째 값을 반환하고 제거하지 않음. 비어있다면 null 반환 |
📌 사용 예제
PriorityQueue pq = new PriorityQueue<>((o1, o2) -> {
int x = Integer.parseInt(o1.toString());
int y = Integer.parseInt(o2.toString());
// x, y가 들어왔을 때, x에 높은 우선순위를 주고싶다면 음수값 return
if(x % 2 == y % 2) {
return x - y;
} else {
if(x % 2 == 1 && y % 2 == 0) {
return -1;
} else {
return 1;
}
}
});
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>((o1, o2) -> {
int first_abs = Math.abs(o1);
int second_abs = Math.abs(o2);
if(first_abs == second_abs) {
return o1 > o2 ? 1 : -1;
}
else{
return first_abs - second_abs;
}
});
728x90
반응형
'Language > Java' 카테고리의 다른 글
[JAVA] Stack과 Queue (0) | 2024.05.02 |
---|---|
[JAVA] Deque 덱 이란? (0) | 2024.05.02 |
[Java] BufferedReader, BufferedWriter, StringTokenizer를 통한 빠른 입출력 (0) | 2024.03.11 |
[JAVA] 자바란 ? 자바의 특징 (0) | 2024.01.20 |