ในการใช้ PriorityQueue ผ่านตัวเปรียบเทียบใน Java โค้ดจะเป็นดังนี้ -
ตัวอย่าง
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;
}
} ผลลัพธ์
Goldberg Joe
คลาสชื่อ Demo มีฟังก์ชันหลัก ในที่นี้ มีการกำหนดออบเจ็กต์สแกนเนอร์ใหม่และคิวลำดับความสำคัญ มีการสร้างคลาสสาธิตสองอินสแตนซ์และเพิ่มองค์ประกอบเข้าไป
คิวลำดับความสำคัญจะถูกตรวจสอบว่าว่างหรือไม่ และถ้าไม่ใช่ ฟังก์ชันการสำรวจความคิดเห็นจะถูกเรียกบนคิวลำดับความสำคัญและจะได้รับชื่อ ตอนนี้ ตัวเปรียบเทียบถูกใช้งานโดยคลาสที่สร้างขึ้นใหม่ และฟังก์ชันเปรียบเทียบจะเปรียบเทียบค่าสองค่าจากสองอินสแตนซ์ของคลาสสาธิต คลาสสาธิตใช้ชื่อและอายุ มันกำหนดคอนสตรัคเตอร์และฟังก์ชันชื่อ 'getName' ที่ส่งกลับชื่อ