为了通过Java中的Comparator实现PriorityQueue,代码如下-
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的类包含Main函数。 这里,定义了新的扫描仪对象和优先级队列。 将创建Demo类的两个实例,并向其中添加元素。
检查优先级队列是否为空,如果不为空,则调用优先级队列上的轮询函数并获取其名称。 现在,比较器由一个新创建的类实现,并且Compare函数比较来自Demo类的两个实例的两个值。 Demo类接受名称和年龄。 它定义了一个构造函数和一个返回名称的名为“getName”的函数。