【笔记】Java的PriorityQueue和PriorityBlockingQueue

前言

Java的PriorityQueue和PriorityBlockingQueue学习笔记

继承

graph TD
  Object --> AbstractCollection
  AbstractCollection --> AbstractQueue
  AbstractQueue --> PriorityBlockingQueue
  AbstractQueue --> PriorityQueue

  Iterable --> Collection
  Collection --> AbstractCollection

  Collection --> Queue
  Queue --> AbstractQueue

  style Object fill:#f0f8ff,stroke:#696969
  style AbstractCollection fill:#f0f8ff,stroke:#696969
  style AbstractQueue fill:#f0f8ff,stroke:#696969
  style PriorityBlockingQueue fill:#f0f8ff,stroke:#696969
  style PriorityQueue fill:#f0f8ff,stroke:#696969

  style Iterable fill:#f0f8ff,stroke:#4169e1
  style Collection fill:#f0f8ff,stroke:#4169e1

  style Queue fill:#f0f8ff,stroke:#4169e1

PriorityQueue

  • 底层维护排序顺序,遍历时不一定是按照排序顺序遍历,但是连续出队列时一定拿到的是有序的结果

创建对象

1
PriorityQueue<Object> queue = new PriorityQueue<>();

基于已有集合创建

1
2
3
Collection<Object> c;

PriorityQueue<Object> queue = new PriorityQueue<>(c);

PriorityBlockingQueue

  • PriorityBlockingQueue是线程安全的PriorityQueue

创建对象

1
PriorityBlockingQueue<Object> queue = new PriorityBlockingQueue<>();

基于已有集合创建

1
2
3
Collection<Object> c;

PriorityBlockingQueue<Object> queue = new PriorityBlockingQueue<>(c);

Collection的相关方法

传送门

Queue的相关方法

传送门

完成