[알고리즘] Priority Queue 사용법
Priority Queue 사용법
Priority Queue 선언
import java.util.PriorityQueue; //import
//int형 priorityQueue 선언 (우선순위가 낮은 숫자 순) -1,2,3,4,5
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
//int형 priorityQueue 선언 (우선순위가 높은 숫자 순) 5, 4, 3,2,-1
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(Collections.reverseOrder());
//String형 priorityQueue 선언 (우선순위가 낮은 숫자 순)
PriorityQueue<String> priorityQueue = new PriorityQueue<>();
//String형 priorityQueue 선언 (우선순위가 높은 숫자 순)
PriorityQueue<String> priorityQueue = new PriorityQueue<>(Collections.reverseOrder());
객체 Priority Queue
class Vehicle implements Comparable<Vehicle>{
private String name;
private int time;
public Vehicle(String name, int time) {
this.name = name;
this.time = time;
}
public String getName() {
return this.name;
}
public int getTime() {
return this.time;
}
@Override
public int compareTo(Vehicle target) {
// 자신의 값이 작으면 -1
// 자신의 값과 같으면 0
// 자신보다 값이 크면 1
// this 즉 내 자신이 target 받아오는 것보다 작으면 앞으로(-1) 내 자신이 크면 뒤로 // 가겠따는 의미(1)
if(this.time < target.getTime()) return -1;
else if(this.time > target.getTime()) return 1;
return 0;
}
}
//main
PriorityQueue<Vehicle> pQueue = new PriorityQueue<Vehicle>();
pQueue.offer(new Vehicle("대중교통", 70));
pQueue.offer(new Vehicle("자가용", 45));
pQueue.offer(new Vehicle("도보", 400));
pQueue.offer(new Vehicle("자전거", 125));
while(!pQueue.isEmpty()) {
Vehicle v = pQueue.poll();
System.out.println(v.getName() + " 시간 :" + v.getTime());
// 결과
자가용 시간 :45
대중교통 시간 :70
자전거 시간 :125
도보 시간 :400