자바 자료구조

☕️ [JAVA] 우선순위 큐 (Priority Queue)

King of Silicon Valley 2021. 10. 12. 17:39
728x90

이번에는 자바의 Priority Queue의 사용법을 알아보겠습니다. 

 

Priority Queue는 조건을 통해 최소 힙 최대 힙 자료구조로 선언할 수 있습니다. 

 

아래 블로그 글을 참고히여 약간의 수정과 요약을 정리했습니다. 

https://coding-factory.tistory.com/603

 

 

[Java] PriorityQueue(우선순위 큐) 클래스 사용법 & 예제 총정리

우선순위 큐(Priority Queue)란? 일반적으로 큐는 데이터를 일시적으로 쌓아두기 위한 자료구조로 스택과는 다르게 FIFO(First In First Out)의 구조 즉 먼저 들어온 데이터가 먼저 나가는 구조를 가집니다

coding-factory.tistory.com

 

Priority Queue 선언

import java.util.PriorityQueue; //import

//int형 priorityQueue 선언 (우선순위가 낮은 숫자 순)
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();

//int형 priorityQueue 선언 (우선순위가 높은 숫자 순)
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(Collections.reverseOrder());

//String형 priorityQueue 선언 (우선순위가 낮은 숫자 순)
PriorityQueue<String> priorityQueue = new PriorityQueue<>(); 

//String형 priorityQueue 선언 (우선순위가 높은 숫자 순)
PriorityQueue<String> priorityQueue = new PriorityQueue<>(Collections.reverseOrder());

 

Priority Queue 값 추가

priorityQueue.add(1);     // priorityQueue 값 1 추가
priorityQueue.add(2);     // priorityQueue 값 2 추가
priorityQueue.offer(3);   // priorityQueue 값 3 추가

.add()

.offer() 메소드 둘다 값을 추가할 수 있습니다. 

 

offer는 큐가 가득차서 더이상 넣을 수 없으면 false를 반환하고 따로 에러를 throw하지 않습니다. 

 

add는 큐가 가득찬 상태에서 넣으면 illegalStateExceptiond을 발생시킵니다. 

 

Priority Queue 값 삭제

priorityQueue.poll();       // priorityQueue에 첫번째 값을 반환하고 제거 비어있다면 null
priorityQueue.remove();     // priorityQueue에 첫번째 값 제거
priorityQueue.clear();      // priorityQueue에 초기화

.poll() 메소드는 헤드를 반환하고 제거 합니다. 

 

.remove()메소드 삭제를 실행합니다. 

 

.clear()메소드는 큐의 값을 비웁니다. 

 

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

.peek() 메소드로 가장 우선순위가 높은값을 반환할 수 있습니다. 

 

'자바 자료구조' 카테고리의 다른 글

☕️ [JAVA] HashMap  (0) 2021.10.12
☕️ [JAVA] LinkedList  (0) 2021.10.12
☕️ [JAVA] ArrayList  (0) 2021.10.12
☕️ [JAVA] 이진 탐색트리 구현  (0) 2021.10.08
☕️ [JAVA] 해시리니어 구현  (0) 2021.10.07