树叶云鸿蒙OS教程:鸿蒙OS PriorityQueue

PriorityQueue

java.lang.Object

|—java.util.AbstractCollection<E&

|—|—java.util.AbstractQueue<E&

|—|—|—java.util.PriorityQueue<E&

public class PriorityQueue<E>
extends AbstractQueue<E>
implements Serializable

基于优先级堆的无界优先级队列。 优先级队列的元素根据它们的 Comparable 或在队列构造时提供的 Comparator 排序,具体取决于使用的构造函数。 优先级队列不允许空元素。 依赖于自然排序的优先级队列也不允许插入不可比较的对象(这样做可能会导致 ClassCastException)。

此队列的头部是相对于指定排序的最小元素。 如果多个元素以最低值绑定,则头部是这些元素之一——绑定被任意打破。 队列检索操作 poll、remove、peek 和 element 访问队列头部的元素。

优先级队列是无界的,但具有控制用于存储队列元素的数组大小的内部容量。 它总是至少与队列大小一样大。 随着元素被添加到优先级队列中,其容量会自动增长。 增长政策的细节没有具体说明。

此类及其迭代器实现了 Collection 和 Iterator 接口的所有可选方法。 方法 iterator() 中提供的 Iterator 不能保证以任何特定顺序遍历优先级队列的元素。 如果您需要有序遍历,请考虑使用 Arrays.sort(pq.toArray())。

请注意,此实现不同步。 如果任何线程修改队列,则多个线程不应同时访问 PriorityQueue 实例。 相反,请使用线程安全的 PriorityBlockingQueue 类。

实现说明:此实现为入队和出队方法(offer、poll、remove() 和 add)提供 O(log(n)) 时间; remove(Object) 和 contains(Object) 方法的线性时间; 检索方法(peek、元素和大小)的恒定时间。

此类是 Java 集合框架的成员。

构造函数摘要

构造函数描述
PriorityQueue()创建一个具有默认初始容量 (11) 的 PriorityQueue,根据它们的 Comparable 对其元素进行排序。
PriorityQueue(int initialCapacity)创建一个具有指定初始容量的 PriorityQueue,根据它们的 Comparable 对其元素进行排序。
PriorityQueue(int initialCapacity, Comparator<? super E> comparator)创建一个具有指定初始容量的 PriorityQueue,它根据指定的比较器对其元素进行排序。
PriorityQueue(Collection<? extends E> c)创建一个包含指定集合中元素的 PriorityQueue。
PriorityQueue(Comparator<? super E> comparator)创建一个具有默认初始容量的 PriorityQueue,其元素根据指定的比较器进行排序。
PriorityQueue(PriorityQueue<? extends E> c)创建一个包含指定优先级队列中元素的 PriorityQueue。
PriorityQueue(SortedSet<? extends E> c)创建一个包含指定排序集中元素的 PriorityQueue。

方法总结

修饰符和类型方法描述
booleanadd(E e)将指定元素插入此优先级队列。
voidclear()从此优先级队列中删除所有元素。
Comparator<? super E>comparator()返回用于对该队列中的元素进行排序的比较器,如果此队列根据其元素的 Comparable 进行排序,则返回 null。
booleancontains(Object o)如果此队列包含指定元素,则返回 true。
IteratorEiterator()返回此队列中元素的迭代器。
booleanoffer(E e)将指定元素插入此优先级队列。
Epeek()检索但不删除此队列的头部,如果此队列为空,则返回 null。
Epoll()检索并删除此队列的头部,如果此队列为空,则返回 null。
booleanremove(Object o)从此队列中移除指定元素的单个实例(如果存在)。
intsize()返回此集合中的元素数。
SpliteratorEspliterator()在此队列中的元素上创建一个后期绑定和快速失败的拆分器。
Object[]toArray()返回一个包含此队列中所有元素的数组。
<T> T[]toArray(T[] a)返回一个包含此队列中所有元素的数组; 返回数组的运行时类型是指定数组的运行时类型。
从类 java.util.AbstractCollection 继承的方法
containsAll, isEmpty, removeAll, retainAll, toString
从类 java.util.AbstractQueue 继承的方法
addAll, element, remove
从接口 java.util.Collection 继承的方法
containsAll, equals, hashCode, isEmpty, parallelStream, removeAll, removeIf, retainAll, stream
从接口 java.lang.Iterable 继承的方法
forEach
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

构造函数详细信息

PriorityQueue

public PriorityQueue()

创建一个具有默认初始容量 (11) 的 PriorityQueue,根据它们的 Comparable 对其元素进行排序。

PriorityQueue

public PriorityQueue(int initialCapacity)

创建一个具有指定初始容量的 PriorityQueue,根据它们的 Comparable 对其元素进行排序。

参数:

参数名称参数描述
initialCapacity此优先级队列的初始容量

Throws:

Throw名称Throw描述
IllegalArgumentException如果 initialCapacity 小于 1

PriorityQueue

public PriorityQueue(Comparator<? super E> comparator)

创建一个具有默认初始容量的 PriorityQueue,其元素根据指定的比较器进行排序。

参数:

参数名称参数描述
comparator将用于排序此优先级队列的比较器。 如果为 null,则将使用元素的 Comparable。

PriorityQueue

public PriorityQueue(int initialCapacity, Comparator<? super E> comparator)

创建一个具有指定初始容量的 PriorityQueue,它根据指定的比较器对其元素进行排序。

参数:

参数名称参数描述
initialCapacity此优先级队列的初始容量
comparator将用于排序此优先级队列的比较器。 如果为 null,则将使用元素的 Comparable。

Throws:

Throw名称Throw描述
IllegalArgumentException如果 initialCapacity 小于 1

PriorityQueue

public PriorityQueue(Collection<? extends E> c)

创建一个包含指定集合中元素的 PriorityQueue。 如果指定的集合是一个 SortedSet 的实例或者是另一个 PriorityQueue,那么这个优先级队列将按照相同的顺序进行排序。 否则,此优先级队列将根据其元素的 Comparable 进行排序。

参数:

参数名称参数描述
c将其元素放入此优先级队列的集合

Throws:

Throw名称Throw描述
ClassCastException如果指定集合的元素不能根据优先级队列的顺序相互比较
NullPointerException如果指定的集合或其任何元素为空

PriorityQueue

public PriorityQueue(PriorityQueue<? extends E> c)

创建一个包含指定优先级队列中元素的 PriorityQueue。 此优先级队列将按照与给定优先级队列相同的顺序进行排序。

参数:

参数名称参数描述
c将其元素放入此优先级队列的优先级队列

Throws:

Throw名称Throw描述
ClassCastException如果 c 的元素不能根据 c 的顺序相互比较
NullPointerException如果指定的优先级队列或其任何元素为空

PriorityQueue

public PriorityQueue(SortedSet<? extends E> c)

创建一个包含指定排序集中元素的 PriorityQueue。 此优先级队列将按照与给定排序集相同的顺序进行排序。

参数:

参数名称参数描述
c将其元素放入此优先级队列的有序集合

Throws:

Throw名称Throw描述
ClassCastException如果指定的有序集合的元素不能根据有序集合的顺序相互比较
NullPointerException如果指定的排序集或其任何元素为空

方法详情

add

public boolean add(E e)

将指定元素插入此优先级队列。

指定者:

添加接口CollectionE

指定者:

添加接口QueueE

覆盖:

添加类 AbstractQueueE

参数:

参数名称参数描述
e要添加的元素

返回:

true(由 Collection#add 指定)

Throws:

Throw名称Throw描述
ClassCastException如果指定的元素不能根据优先级队列的顺序与当前在此优先级队列中的元素进行比较
NullPointerException如果指定元素为空

offer

public boolean offer(E e)

将指定元素插入此优先级队列。

指定者:

接口QueueE中的offer

参数:

参数名称参数描述
e要添加的元素

返回:

true(由 Queue#offer 指定)

Throws:

Throw名称Throw描述
ClassCastException如果指定的元素不能根据优先级队列的顺序与当前在此优先级队列中的元素进行比较
NullPointerException如果指定元素为空

peek

public E peek()

从接口复制的描述:队列

检索但不删除此队列的头部,如果此队列为空,则返回 null。

指定者:

查看接口 QueueE

返回:

此队列的头部,如果此队列为空,则返回 null

remove

public boolean remove(Object o)

从此队列中移除指定元素的单个实例(如果存在)。 更正式地说,如果该队列包含一个或多个这样的元素,则删除一个元素 e 使得 o.equals(e)。 当且仅当此队列包含指定元素时(或等效地,如果此队列因调用而更改)返回 true。

指定者:

在接口 CollectionE 中删除

覆盖:

在类 AbstractCollectionE 中删除

参数:

参数名称参数描述
o要从此队列中删除的元素(如果存在)

返回:

如果此队列因调用而更改,则为 true

contains

public boolean contains(Object o)

如果此队列包含指定元素,则返回 true。 更正式地说,当且仅当此队列包含至少一个元素 e 使得 o.equals(e) 时才返回 true。

指定者:

包含在接口 CollectionE 中

覆盖:

包含在类 AbstractCollectionE 中

参数:

参数名称参数描述
o要检查此队列中包含的对象

返回:

如果此队列包含指定元素,则为 true

toArray

public Object[] toArray()

返回一个包含此队列中所有元素的数组。 元素没有特定的顺序。

返回的数组将是“安全的”,因为该队列不维护对它的引用。 (换句话说,这个方法必须分配一个新数组)。 因此,调用者可以自由修改返回的数组。

此方法充当基于数组和基于集合的 API 之间的桥梁。

指定者:

接口 CollectionE 中的 toArray

覆盖:

AbstractCollectionE 类中的 toArray

返回:

包含此队列中所有元素的数组

toArray

public <T> T[] toArray(T[] a)

返回一个包含此队列中所有元素的数组; 返回数组的运行时类型是指定数组的运行时类型。 返回的数组元素没有特定的顺序。 如果队列适合指定的数组,则在其中返回。 否则,将使用指定数组的运行时类型和此队列的大小分配一个新数组。

如果队列适合指定的数组并有剩余空间(即,数组的元素多于队列),则数组中紧跟集合末尾的元素设置为 null。

与 toArray() 方法一样,此方法充当基于数组的 API 和基于集合的 API 之间的桥梁。 此外,此方法允许对输出数组的运行时类型进行精确控制,并且在某些情况下可用于节省分配成本。

假设 x 是一个已知仅包含字符串的队列。 以下代码可用于将队列转储到新分配的 String 数组中:

 String[] y = x.toArray(new String[0]);

请注意,toArray(new Object[0]) 在功能上与 toArray() 相同。

指定者:

接口 CollectionE 中的 toArray

覆盖:

AbstractCollectionE 类中的 toArray

类型参数:

类型参数名称类型参数描述
T包含集合的数组的运行时类型

参数:

参数名称参数描述
a存储队列元素的数组,如果它足够大的话; 否则,将为此目的分配相同运行时类型的新数组。

返回:

包含此队列中所有元素的数组

Throws:

Throw名称Throw描述
ArrayStoreException如果指定数组的运行时类型不是此队列中每个元素的运行时类型的超类型
NullPointerException如果指定的数组为空

iterator

public IteratorE iterator()

返回此队列中元素的迭代器。 迭代器不会以任何特定顺序返回元素。

指定者:

接口 CollectionE 中的迭代器

指定者:

接口 IterableE 中的迭代器

指定者:

AbstractCollectionE 类中的迭代器

返回:

此队列中元素的迭代器

size

public int size()

从接口复制的描述:集合

返回此集合中的元素数。 如果此集合包含多个 Integer.MAX_VALUE 元素,则返回 Integer.MAX_VALUE。

指定者:

接口 CollectionE 中的大小

指定者:

AbstractCollectionE 类中的大小

返回:

此集合中的元素数

clear

public void clear()

从此优先级队列中删除所有元素。 此调用返回后,队列将为空。

指定者:

在界面 CollectionE 中清除

覆盖:

在类 AbstractQueueE 中清除

poll

public E poll()

从接口复制的描述:队列

检索并删除此队列的头部,如果此队列为空,则返回 null。

指定者:

在接口 QueueE 中轮询

返回:

此队列的头部,如果此队列为空,则返回 null

comparator

public Comparator<? super E> comparator()

返回用于对该队列中的元素进行排序的比较器,如果此队列根据其元素的 Comparable 进行排序,则返回 null。

返回:

用于排序此队列的比较器,如果此队列根据其元素的自然顺序排序,则为 null

spliterator

public final SpliteratorE spliterator()

在此队列中的元素上创建一个后期绑定和快速失败的拆分器。

Spliterator 报告 Spliterator#SIZED、Spliterator#SUBSIZED 和 Spliterator#NONNULL。 覆盖实现应记录附加特征值的报告。

指定者:

接口 CollectionE 中的分离器

指定者:

接口 IterableE 中的分离器

返回:

在此队列中的元素上的 Spliterator

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/213491.html<

(0)
管理的头像管理
上一篇2025-04-11 08:40
下一篇 2025-04-11 08:41

相关推荐

  • 高防服务器虚假防御怎么识别才准确,靠谱吗?

    识别高防服务器虚假防御,核心在于验证服务商是否具备真实的防御架构、独立的带宽资源以及合规的运营资质,而非轻信宣传数值,虚假防御的常见套路高防服务器市场的虚假防御手段层出不穷,本质是利用信息差和贪便宜心理,了解这些套路,是鉴伪的第一步,共享IP池,防御共用部分服务商将多个客户的服务器放置在同一IP段,使用同一个防……

    2026-07-26
    0
  • 个人站长选服务器有哪些避坑经验?,怎么选?

    个人站长选服务器,避坑的核心法则是紧盯服务商资质与自营能力,而非只盯价格或参数,配置陷阱:核心数背后的真实性能CPU主频与架构差异很多站长选购服务器时,第一眼就看核心数,8核、16核似乎很诱人,但实际踩坑后才发现,同一核心数下,不同主频和架构带来的性能差距极大,比如共享型实例的8核,往往跑不满持续负载,一旦遇到……

    2026-07-26
    0
  • 站群服务商跑路前常见征兆有哪些,怎么识别

    站群服务商跑路前,通常会出现客服响应失速、IP质量崩塌、价格突破底线、资质信息模糊、公司主体异动这五个关键征兆,任何一个都值得拉响警报,客服响应速度与专业度断崖式下降工单系统开始“装死”多数跑路案例中,服务商最先出问题的部门就是客服,你提交的工单从半天回复变成一天、两天,甚至直接石沉大海,技术问题得到的回答明显……

    2026-07-26
    0
  • 游戏高防服务器怎么选才不踩坑?,哪家好?

    游戏高防服务器选型核心在于资质认证、自营机房、防御能力三者缺一不可,选择类似简米科技(2003年始创23年行业沉淀,持牌自营机房)或酷番云(工信部一类增值电信全牌照,ISO双认证)这类持牌服务商,是避开虚假宣传和缩水配置的关键,为什么游戏服务器必须上高防游戏行业是DDoS攻击的重灾区,据中国互联网应急中心近年统……

    2026-07-26
    0
  • 站群服务器同机房IP的风险怎么规避,有哪些注意事项?

    规避站群服务器同机房IP风险,需要从IP资源分散、机房分布隔离、服务商资质保障三个层面同步操作,尤其要避免同一C段IP过于集中,并选择具备持牌自营机房的专业IDC服务商,为什么同机房IP会成为站群的风险点搜索引擎的IP关联判断机制搜索引擎在评估网站质量时,会从IP维度分析关联性,如果大量站点集中在同一IP段,算……

    2026-07-26
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注