import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
public class PriorityQueueDemo {
static class IntegerComparator implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
}
// 鼠、牛、虎、兔、龙、蛇
public static void main(String[] args) {
Queue<String> queue = new PriorityQueue<>(new TianGanComparator());
queue.add("鼠");
queue.add("牛");
queue.add("虎");
queue.add("兔");
queue.add("龙");
queue.add("蛇");
System.out.println(queue.remove());
System.out.println(queue.remove());
System.out.println(queue.remove());
System.out.println(queue.remove());
System.out.println(queue.remove());
System.out.println(queue.remove());
}
static class TianGanComparator implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
return transform(o1) - transform(o2);
}
private int transform(String s) {
switch (s) {
case "蛇": return 1;
case "龙": return 2;
case "兔": return 3;
case "虎": return 4;
case "牛": return 5;
case "鼠": return 6;
default: return -1;
}
}
}
public static void main2(String[] args) {
Comparator<Integer> comparator = new IntegerComparator();
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(comparator);
Queue<Integer> queue = priorityQueue;
queue.add(3);
queue.add(5);
queue.add(2);
queue.add(1);
queue.add(4);
// Integer 实现过 Comparable
// PriorityQueue 是小堆
System.out.println(queue.remove());
System.out.println(queue.remove());
System.out.println(queue.remove());
System.out.println(queue.remove());
System.out.println(queue.remove());
}
}
Java中的优先级队列练习
最新推荐文章于 2024-07-24 12:40:06 发布
这篇博客展示了如何利用Java的PriorityQueue和自定义Comparator实现元素的优先级排序。示例中分别创建了IntegerComparator和TianGanComparator,用于对整数和十二生肖字符串进行降序排列。博客通过添加和移除元素,演示了优先队列的基本操作和排序效果。
摘要由CSDN通过智能技术生成