Java

Java priority queue

리콜 2023. 9. 30. 02:28

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