用java写一个优先队列的比较器
时间: 2023-09-14 21:05:55 浏览: 90
好的,下面是一个使用Java编写的优先队列比较器的示例代码:
```
import java.util.Comparator;
import java.util.PriorityQueue;
public class PriorityQueueComparatorExample {
public static void main(String[] args) {
// 创建一个优先队列,使用自定义的比较器
PriorityQueue<Integer> queue = new PriorityQueue<>(new IntegerComparator());
// 添加一些元素
queue.add(5);
queue.add(1);
queue.add(3);
queue.add(2);
queue.add(4);
// 输出队列中的元素
while (!queue.isEmpty()) {
System.out.println(queue.poll());
}
}
}
// 定义一个比较器,用于比较整数的大小
class IntegerComparator implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
}
```
在这个示例中,我们定义了一个名为 `IntegerComparator` 的比较器类,它实现了 `Comparator<Integer>` 接口。该接口有一个 `compare` 方法,接受两个参数,并返回一个整数值,表示两个参数的大小关系。
在 `compare` 方法中,我们简单地计算了两个整数的差值,并将其作为比较结果返回。如果返回的值小于 0,则表示第一个参数小于第二个参数;如果返回的值大于 0,则表示第一个参数大于第二个参数;如果返回的值等于 0,则表示两个参数相等。
我们在主方法中创建了一个优先队列,并将 `IntegerComparator` 对象作为其构造函数的参数,这样就可以使用我们自定义的比较器对队列中的元素进行排序。最后,我们使用 `poll` 方法逐个弹出队列中的元素,并输出它们的值。这样,就可以按照我们定义的顺序输出队列中的元素。
阅读全文