Để triển khai PriorityQueue qua Comparator trong Java, mã như sau:
Ví dụ
import java.util.*;
public class Demo{
public static void main(String[] args){
Scanner my_scan = new Scanner(System.in);
PriorityQueue<Demo_class> my_pq = new PriorityQueue<Demo_class>(3, new demoComparator());
Demo_class obj_1 = new Demo_class("Joe", 25);
my_pq.add(obj_1);
Demo_class obj_2 = new Demo_class("Goldberg", 27);
my_pq.add(obj_2);
while (!my_pq.isEmpty()){
System.out.println(my_pq.poll().getName());
}
}
}
class demoComparator implements Comparator<Demo_class>{
public int compare(Demo_class s1, Demo_class s2){
if (s1.age < s2.age)
return 1;
else if (s1.age > s2.age)
return -1;
return 0;
}
}
class Demo_class{
public String name;
public int age;
public Demo_class(String name, int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
}
Kết quả
Goldberg Joe
Lớp Demo chứa main. Scanner mới và PriorityQueue định nghĩa. Hai instance Demo_class tạo và thêm phần tử.
PriorityQueue kiểm tra rỗng, nếu không, poll gọi và lấy tên. Comparator triển khai bởi lớp mới, hàm compare so sánh hai giá trị từ hai instance Demo_class. Lớp Demo_class nhận tên và tuổi, định nghĩa constructor và getName trả về tên.