Priority Queue (우선순위큐)
Priority Queue(우선순위큐)란
- 먼저 들어간 데이터가 먼저 나오는 일반 큐와 달리 우선순위를 결정하여 들어온 순서와 상관없이 그 우선순위가 높은 데이터가 먼저 나가는 자료구조
- 자바에서는 Comparable의 compareTo를 이용하여 우선순위를 정해주면 된다. (아래 소스코드 참고)
import java.util.PriorityQueue;
public class PQ {
static PriorityQueue<Person> getPriorityQueueOfPersons() {
PriorityQueue<Person> priorityQueue = new PriorityQueue<>();
priorityQueue.offer(new Person("B", 37));
priorityQueue.offer(new Person("C", 42));
priorityQueue.offer(new Person("E", 98));
priorityQueue.offer(new Person("A", 28));
priorityQueue.offer(new Person("D", 66));
return priorityQueue;
}
public static void main(String[] args) {
PriorityQueue<Person> priorityQueue = getPriorityQueueOfPersons();
// 나이가 많은 순으로 학생들 목록을 출력
while (!priorityQueue.isEmpty())
System.out.println(priorityQueue.poll());
}
}
class Person implements Comparable<Person> {
String name;
int weight;
public Person(String name, int weight) {
this.name = name;
this.weight = weight;
}
@Override
public int compareTo(Person target) {
return this.weight <= target.weight ? 1 : - 1;
}
@Override
public String toString() {
return "이름 : " + name + ", 몸무게 : " + weight;
}
}
결과
이름 : E, 몸무게 : 98
이름 : D, 몸무게 : 66
이름 : C, 몸무게 : 42
이름 : B, 몸무게 : 37
이름 : A, 몸무게 : 28
참고 사이트
Hong’s Store House : http://asuraiv.blogspot.com/2015/11/java-priorityqueue.html