Super Kawaii Cute Cat Kaoani [JAVA] PriorityQueue 란? / 사용법

[JAVA] PriorityQueue 란? / 사용법

2024. 5. 12. 01:34
728x90
SMALL

📌 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;
            }
        });

 

 

 

 

 

 

java - Priority Queue(우선순위 큐)

큐(Queue) 개념 - FIFO(First In First Out)구조로 먼저들어온 순서대로 데이터가 나가게 된다. ...

blog.naver.com

 

[JAVA] PriorityQueue 우선순위 큐 사용법

1. PriorityQueue 란? 일반적인 큐는 먼저 들어간 데이터가 먼저 나가는 구조인 FIFO 형식의 자료구조입니다. 반면에 우선순위 큐의 경우 들어가는 순서와는 상관없이 우선순위가 높은 데이터가 먼저

kbj96.tistory.com

 

728x90
LIST

BELATED ARTICLES

more