[JAVA] PriorityQueue 란? / 사용법

2024. 5. 12. 01:34·Language/Java
728x90
반응형

📌 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
반응형
저작자표시 비영리 변경금지 (새창열림)

'Language > Java' 카테고리의 다른 글

[JAVA] Stack과 Queue  (0) 2024.05.02
[JAVA] Deque 덱 이란?  (0) 2024.05.02
[Java] BufferedReader, BufferedWriter, StringTokenizer를 통한 빠른 입출력  (0) 2024.03.11
[JAVA] 자바란 ? 자바의 특징  (0) 2024.01.20
'Language/Java' 카테고리의 다른 글
  • [JAVA] Stack과 Queue
  • [JAVA] Deque 덱 이란?
  • [Java] BufferedReader, BufferedWriter, StringTokenizer를 통한 빠른 입출력
  • [JAVA] 자바란 ? 자바의 특징
예롱메롱
예롱메롱
  • 예롱메롱
    예롱이의 개발 블로그
    예롱메롱
  • 전체
    오늘
    어제
    • 전체보기 (274)
      • 프로젝트 (35)
        • Wedle (12)
        • 인스타그램 클론 코딩 (13)
        • 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (10)
      • 인프런 Spring 강의 정리 (79)
        • 스프링 입문 - 코드로 배우는 스프링 부트, 웹 .. (7)
        • Spring 핵심 원리 - 기본편 (9)
        • 모든 개발자를 위한 HTTP 웹 기본 지식 (8)
        • 자바 ORM 표준 JPA 프로그래밍 - 기본편 (11)
        • 실전! 스프링 부트와 JPA 활용1 - 웹 애플리.. (6)
        • 실전! 스프링 부트와 JPA 활용2 - API 개.. (5)
        • 실전! 스프링 데이터 JPA (7)
        • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (7)
        • 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 (11)
        • 실전! Querydsl (8)
      • Cloud (3)
      • Spring (6)
        • spring boot (5)
        • 소셜로그인 (1)
      • Docker (2)
      • DevOps (0)
      • Coding Test (114)
        • Programmers (37)
        • Baekjoon (76)
      • KB It's Your Life 6기 (1)
      • CS (18)
        • 알고리즘 (13)
        • 컴퓨터 구조 (1)
        • Operating System (0)
        • Network (0)
        • Database (4)
      • git (1)
      • Language (15)
        • Java (5)
        • C++ (6)
        • Python (4)
    • GITHUB GITHUB
    • INSTAGRAM INSTAGRAM
  • hELLO· Designed By정상우.v4.10.3
예롱메롱
[JAVA] PriorityQueue 란? / 사용법
상단으로

티스토리툴바