PriorityQueue 우선순위큐, 힙

김성인·2023년 10월 10일
0

자바코테

목록 보기
3/12
    public static class Song implements Comparable<Song> {
        int plays;
        String genre;
        int index;


        public Song(int plays, String genre, int index) {
            this.plays = plays;
            this.genre = genre;
            this.index = index;
        }

        @Override
        public int compareTo(Song s) { // 내림차순
            if(this.plays < s.plays) return 1;
            else if (this.plays > s.plays) return -1;
            return 0;
            
            // return (this.필드 - s.필드) * -1; (오름차순)
        }
        
        @Override
        public int compareTo(Song s) { // 오름차순
            if(this.plays > s.plays) return 1;
            else if (this.plays < s.plays) return -1;
            return 0;
            
            // return this.필드 - s.필드; (오름차순)
        }


    }

선언

import java.util.PriorityQueue;
import java.util.Collections;

PriorityQueue<Integer> pQueue = new PriorityQueue<>();
PriorityQueue<Integer> pQueue = new PriorityQueue<>(Collections.reverseOrder());

값 추가

PriorityQueue.add()

  • 값 올바르게 추가시
    • return true
  • 값 올바르게 추가 X
    • throw ClassCastException : priority 큐의 순서에 대해 Comparable 한 객체가 아닐때
    • throw NullPointerException : 넣으려는 값이 null 일때

PriorityQueue.offer()

  • 값 올바르게 추가시
    • return true
  • 값 올바르게 추가 X
    • return false

값 삭제

PriorityQueue.poll() : 우선순위 큐 에서 첫번쨰 값 반환, 비어있다면 null
PriorityQueue.remove() : 우선순위 큐 에서 첫번쨰 값 반환, 비어있다면 Exception
PriorityQueue.clear(): 우선순위 큐 초기화


값 조회

첫번째 값 반환, 제거 X
PriorityQueue.peek(): 비어있다면 null 반환
PriorityQueue.element(): 비어있다면 Exception


참고

https://velog.io/@gillog/Java-Priority-Queue%EC%9A%B0%EC%84%A0-%EC%88%9C%EC%9C%84-%ED%81%90#priority-queue-%ED%8A%B9%EC%A7%95

https://pangsblog.tistory.com/23

0개의 댓글