package com.common;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.PriorityQueue;
/**
* 优先队列默认为小顶堆,peek、poll时返回最小值
* 使用迭代器时返回顺序为树排列顺序,非排序后的顺序
* 优先考虑是否有必要存储全部数字
*/
public class PriorityNotes {
public static void main() {
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
priorityQueue.add(5);
priorityQueue.add(9);
priorityQueue.add(1);
priorityQueue.add(3);
priorityQueue.add(3);
// while (!priorityQueue.isEmpty()) {
// System.out.println(priorityQueue.poll());
// }
// 通过重写 Comparator改为大顶堆
PriorityQueue<Integer> priorityQueue2 = new PriorityQueue<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
priorityQueue2.add(5);
priorityQueue2.add(9);
priorityQueue2.add(1);
priorityQueue2.add(3);
priorityQueue2.add(3);
// while (!priorityQueue2.isEmpty()) {
// System.out.println(priorityQueue2.poll());
// }
priorityQueue2.size();
PriorityQueue<Integer> priorityQueue3 = new PriorityQueue<>(priorityQueue2);
// while (!priorityQueue3.isEmpty()) {
// System.out.println(priorityQueue3.poll());
// }
System.out.println("e2");
Iterator<Integer> iterator = priorityQueue2.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
System.out.println("e3");
PriorityQueue<Integer> pq = new PriorityQueue<>(priorityQueue);
int i = 1;
while (!pq.isEmpty() && i < 3) {
System.out.println(pq.poll());;
}
}
}
【Java】【代码】PriorityQueue
于 2022-09-23 11:00:17 首次发布