우선 C++에서의 Priority Queue는 default가 최대힙으로 구현이 된다.
알고리즘 문제를 자바로 풀면서, 당연히 자바도 default가 최대힙인 줄 알았으나 ,
자바에서는 defualt가 최소힙이였다.
( 일반적으로, Heap이라고 함은 최대Heap을 말한다.)
C++
priority_queue<int, vector<int>, less<int> > max_heap; // less는 default이므로 생략이 가능.
priority_queue<int, vector<int="">, greater<int>> min_heap; // 최소힙 구현 시, greater<int>를 넣어 줌
.
JAVA
PriorityQueue<Integer> max_heap = new PriorityQueue<>(Collections.reverseOrder());
PriorityQueue<Integer> min_heap = new PriorityQueue<>();
JAVA의 PriorityQueue 사용법
Priority Queue 선언
import java.util.PriorityQueue; //import
//int형 priorityQueue 선언 (최소힙) 자바는 최소힙이 defulat
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
//int형 priorityQueue 선언 (최대힙)
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(Collections.reverseOrder());
Priority Queue 값 추가
priorityQueue.add(1); // priorityQueue 값 1 추가
priorityQueue.add(2); // priorityQueue 값 2 추가
priorityQueue.offer(3); // priorityQueue 값 3 추가
자바의 우선순위 큐에 값을 추가하고 싶다면 add(value) 또는 offer(value)라는 메서드를 활용하면 됩니다.
add(value) 메서드의 경우 만약 삽입에 성공하면 true를 반환하고,( offer(value)와의 차이점 )
큐에 여유 공간이 없어 삽입에 실패하면 IllegalStateException을 발생시킵니다.
Priority Queue 값 삭제
priorityQueue.poll(); // priorityQueue에 첫번째 값을 반환하고 제거 비어있다면 null
priorityQueue.remove(); // priorityQueue에 첫번째 값 제거
priorityQueue.clear(); // priorityQueue에 초기화
Priority Queue에서 우선순위가 가장 높은 값 출력
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();//int형 priorityQueue 선언
priorityQueue.offer(2); // priorityQueue에 값 2 추가
priorityQueue.offer(1); // priorityQueue에 값 1 추가
priorityQueue.offer(3); // priorityQueue에 값 3 추가
priorityQueue.peek(); // priorityQueue에 첫번째 값 참조 = 1
Priority Queue에서 우선순위가 가장 높은 값을 참조하고 싶다면 peek()라는 메서드를 사용하면 됩니다.
위의 예시에서는 우선순위가 가장 높은 1이 출력됩니다.
'프로그래밍 언어 (プログラミング言語) > JAVA' 카테고리의 다른 글
Comparable, Compartor 인터페이스 (0) | 2023.01.11 |
---|---|
JAVA의 정렬 (0) | 2023.01.04 |
Equal(), HashCode() in JAVA (0) | 2023.01.01 |
JAVA에서의 동기화 기법(모니터 etc) (0) | 2022.12.23 |
StringBuilder의 사용 이유와 System.out.print()의 실행 속도 (0) | 2022.12.18 |