1. 개요

자바 PriorityQueue에 대해 간단히 알아본다.

2. 코드

2.1. String 기반 (오름차순)

import java.util.PriorityQueue;

public class PQTest {
    public static void main(String[] args) {
        PriorityQueue<String> priorityQueue = new PriorityQueue<>();

        priorityQueue.add("naver");
        priorityQueue.add("hanmir");
        priorityQueue.add("empas");
        priorityQueue.add("daum");
        priorityQueue.add("altavista");
        priorityQueue.add("yahoo");
        priorityQueue.add("google");
        priorityQueue.add("sarc");

        while (priorityQueue.size() > 0) {
            String poll = priorityQueue.poll();
            System.out.println(poll);
        }
    }
}

[결과]

altavista
daum
empas
google
hanmir
naver
sarc
yahoo

2.2. String 기반 (내림차순)

Integer 같은 경우는 PriorityQueue<String> priorityQueue = new PriorityQueue<>(Collections.reverseOrder()); 를 사용하는 것만으로 구현 가능하지만 String은 그보다는 좀 더 복잡한 과정을 거쳐야 한다.

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

public class PQTest {
    public static void main(String[] args) {
        PriorityQueue<String> priorityQueue = new PriorityQueue<>();

        priorityQueue.add("naver");
        priorityQueue.add("hanmir");
        priorityQueue.add("empas");
        priorityQueue.add("daum");
        priorityQueue.add("altavista");
        priorityQueue.add("yahoo");
        priorityQueue.add("google");
        priorityQueue.add("sarc");

        PriorityQueue<String> reversedPriorityQueue = new PriorityQueue<String>(priorityQueue.size(), Collections.reverseOrder());
        reversedPriorityQueue.addAll(priorityQueue);

        while (reversedPriorityQueue.size() > 0) {
            String poll = reversedPriorityQueue.poll();
            System.out.println(poll);
        }
    }
}

[결과]

yahoo
sarc
naver
hanmir
google
empas
daum
altavista