📜  Java.util.PriorityQueue类(1)

📅  最后修改于: 2023-12-03 15:31:35.220000             🧑  作者: Mango

Java.util.PriorityQueue类

java.util.PriorityQueue类是一个优先级队列,基于优先级堆实现。该类提供了一种先进先出的队列访问方式,但是其中的元素按照优先级排序。

优先级队列使用方法
类定义
public class PriorityQueue<E>
    extends AbstractQueue<E>
    implements Serializable
构造函数
  • PriorityQueue(): 创建一个初始容量为 11、元素按自然顺序排序的空优先级队列。
  • PriorityQueue(Collection<? extends E> c): 创建一个包含指定集合元素的优先级队列。
  • PriorityQueue(int initialCapacity): 创建一个指定初始容量,元素按自然顺序排序的空优先级队列。
  • PriorityQueue(int initialCapacity, Comparator<? super E> comparator):创建一个初始容量为 initialCapacity,按指定比较器排序的空优先级队列。
常用方法
  • boolean add(E e): 将指定元素插入此优先级队列。
  • void clear(): 从此优先级队列中移除所有元素。
  • Comparator<? super E> comparator(): 返回用于对此队列中的元素进行排序的比较器,如果此队列按自然顺序排序,则返回 null。
  • boolean contains(Object o): 如果此队列包含指定的元素,则返回 true。
  • Iterator<E> iterator(): 返回此队列中的元素的迭代器。
  • boolean offer(E e): 将指定元素插入此优先级队列。
  • E peek(): 检索但不移除此队列的头,如果此队列为空,则返回 null。
  • E poll(): 检索并移除此队列的头,如果此队列为空,则返回 null。
  • boolean remove(Object o): 从此队列中移除指定元素的单个实例(如果存在)。
  • int size(): 返回此队列中的元素数量。
优先级队列示例
import java.util.PriorityQueue;

public class PriorityQueueExample {
    public static void main(String[] args) {
        PriorityQueue<Integer> pq = new PriorityQueue<Integer>();
        pq.add(10);
        pq.add(20);
        pq.add(15);
        pq.add(5);
        pq.add(30);
        pq.add(25);
        pq.add(35);
        System.out.println("PriorityQueue elements: ");
        while (!pq.isEmpty()) {
            System.out.println(pq.poll());
        }
    }
}

输出结果:

PriorityQueue elements: 
5
10
15
20
25
30
35
总结

java.util.PriorityQueue类是 Java 集合框架中提供的一种基于优先级堆的优先级队列实现。它提供了一种先进先出的队列访问方式,但是其中的元素按照优先级排序。开发者可以使用该类的各种构造函数和方法来实现自己的应用程序。