Priority Queue는 내부 구조가 힙으로 구성되어 있어 이진트리 구조로 이루어져 있습니다.
들어갈 요소는 비교가 가능한 기준이 있는 요소여야합니다.
사용하기 위해서는
import java.util.PriorityQueue;
로 import를 하고
선언은
import java.util.Collections;
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(Collections.reverseOrder());
이렇게 선언할 수 있는데 Collections.reverseOrder()를 주게 되면
트리의 루트에 가장 높은 수가 오게된다.
기본은 가장 낮은 숫자가 오게 된다.
또한 Integer대신에 String을 사용할 수 있다.
데이터 삽입으로는
priorityQueue.add(1);
priorityQueue.offer(1);
add와 offer가 있다.
둘의 차이는 데이터를 추가를 할때 문제 상황에서 예외를 던지거나 null혹은 false와 같은 값을 반환하느냐의 차이이다.
add의 경우 예외발생으로 예외를 던지고( 여유공간 없을시 IllegalStateException ) offer의 경우 false를 반환 한다.
priorityQueue.poll();
priorityQueue.remove();
priorityQueue.clear();
poll과 remove는 값을 제거하는 것으로
poll은 첫번째값 반환 후 제거, remove는 첫번째값을 제거만 한다.
poll과 remove 또한 add와 offer의 차이로 poll은 실패시 false를 리턴하고 remove는 예외를 리턴한다.
clear()는 PriorityQueue를 초기화 한다.
priorityQueue.peek();
priorityQueue.element();
둘다 첫번째 값을 반환만하고
peek는 비어있다면 null을 반환한다.
element는 예외를 발생시킨다.
추가적으로 PriorityQueue가 비어있는지 확인하려면
priorityQueue.isEmpty()
로 비어있는지 확인을 할 수 있다.
반응형
'Java' 카테고리의 다른 글
CS 스터디 회고 - 운영체제 1 (0) | 2024.12.01 |
---|---|
Java 면접(인터뷰) 스터디 회고 3 (0) | 2024.11.21 |
CS 스터디 회고 - java 2 (0) | 2024.11.15 |
[CS 스터디 회고] JAVA 면접 질문 대비 (1) | 2024.11.08 |
JAVA JVM Memory 정리 (1) | 2024.07.08 |