W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
java.lang.Object
|---java.util.AbstractCollection<E&
|---|---java.util.AbstractQueue<E&
|---|---|---java.util.PriorityQueue<E&
public class PriorityQueue<E>
extends AbstractQueue<E>
implements Serializable
基于優(yōu)先級堆的無界優(yōu)先級隊列。 優(yōu)先級隊列的元素根據(jù)它們的 Comparable 或在隊列構(gòu)造時提供的 Comparator 排序,具體取決于使用的構(gòu)造函數(shù)。 優(yōu)先級隊列不允許空元素。 依賴于自然排序的優(yōu)先級隊列也不允許插入不可比較的對象(這樣做可能會導(dǎo)致 ClassCastException)。
此隊列的頭部是相對于指定排序的最小元素。 如果多個元素以最低值綁定,則頭部是這些元素之一——綁定被任意打破。 隊列檢索操作 poll、remove、peek 和 element 訪問隊列頭部的元素。
優(yōu)先級隊列是無界的,但具有控制用于存儲隊列元素的數(shù)組大小的內(nèi)部容量。 它總是至少與隊列大小一樣大。 隨著元素被添加到優(yōu)先級隊列中,其容量會自動增長。 增長政策的細(xì)節(jié)沒有具體說明。
此類及其迭代器實(shí)現(xiàn)了 Collection 和 Iterator 接口的所有可選方法。 方法 iterator() 中提供的 Iterator 不能保證以任何特定順序遍歷優(yōu)先級隊列的元素。 如果您需要有序遍歷,請考慮使用 Arrays.sort(pq.toArray())。
請注意,此實(shí)現(xiàn)不同步。 如果任何線程修改隊列,則多個線程不應(yīng)同時訪問 PriorityQueue 實(shí)例。 相反,請使用線程安全的 PriorityBlockingQueue 類。
實(shí)現(xiàn)說明:此實(shí)現(xiàn)為入隊和出隊方法(offer、poll、remove() 和 add)提供 O(log(n)) 時間; remove(Object) 和 contains(Object) 方法的線性時間; 檢索方法(peek、元素和大小)的恒定時間。
此類是 Java 集合框架的成員。
構(gòu)造函數(shù) | 描述 |
---|---|
PriorityQueue() | 創(chuàng)建一個具有默認(rèn)初始容量 (11) 的 PriorityQueue,根據(jù)它們的 Comparable 對其元素進(jìn)行排序。 |
PriorityQueue(int initialCapacity) | 創(chuàng)建一個具有指定初始容量的 PriorityQueue,根據(jù)它們的 Comparable 對其元素進(jìn)行排序。 |
PriorityQueue(int initialCapacity, Comparator<? super E> comparator) | 創(chuàng)建一個具有指定初始容量的 PriorityQueue,它根據(jù)指定的比較器對其元素進(jìn)行排序。 |
PriorityQueue(Collection<? extends E> c) | 創(chuàng)建一個包含指定集合中元素的 PriorityQueue。 |
PriorityQueue(Comparator<? super E> comparator) | 創(chuàng)建一個具有默認(rèn)初始容量的 PriorityQueue,其元素根據(jù)指定的比較器進(jìn)行排序。 |
PriorityQueue(PriorityQueue<? extends E> c) | 創(chuàng)建一個包含指定優(yōu)先級隊列中元素的 PriorityQueue。 |
PriorityQueue(SortedSet<? extends E> c) | 創(chuàng)建一個包含指定排序集中元素的 PriorityQueue。 |
修飾符和類型 | 方法 | 描述 |
---|---|---|
boolean | add(E e) | 將指定元素插入此優(yōu)先級隊列。 |
void | clear() | 從此優(yōu)先級隊列中刪除所有元素。 |
Comparator<? super E> | comparator() | 返回用于對該隊列中的元素進(jìn)行排序的比較器,如果此隊列根據(jù)其元素的 Comparable 進(jìn)行排序,則返回 null。 |
boolean | contains(Object o) | 如果此隊列包含指定元素,則返回 true。 |
IteratorE | iterator() | 返回此隊列中元素的迭代器。 |
boolean | offer(E e) | 將指定元素插入此優(yōu)先級隊列。 |
E | peek() | 檢索但不刪除此隊列的頭部,如果此隊列為空,則返回 null。 |
E | poll() | 檢索并刪除此隊列的頭部,如果此隊列為空,則返回 null。 |
boolean | remove(Object o) | 從此隊列中移除指定元素的單個實(shí)例(如果存在)。 |
int | size() | 返回此集合中的元素數(shù)。 |
SpliteratorE | spliterator() | 在此隊列中的元素上創(chuàng)建一個后期綁定和快速失敗的拆分器。 |
Object[] | toArray() | 返回一個包含此隊列中所有元素的數(shù)組。 |
<T> T[] | toArray(T[] a) | 返回一個包含此隊列中所有元素的數(shù)組; 返回數(shù)組的運(yùn)行時類型是指定數(shù)組的運(yùn)行時類型。 |
從類 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 |
public PriorityQueue()
創(chuàng)建一個具有默認(rèn)初始容量 (11) 的 PriorityQueue,根據(jù)它們的 Comparable 對其元素進(jìn)行排序。
public PriorityQueue(int initialCapacity)
創(chuàng)建一個具有指定初始容量的 PriorityQueue,根據(jù)它們的 Comparable 對其元素進(jìn)行排序。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
initialCapacity | 此優(yōu)先級隊列的初始容量 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果 initialCapacity 小于 1 |
public PriorityQueue(Comparator<? super E> comparator)
創(chuàng)建一個具有默認(rèn)初始容量的 PriorityQueue,其元素根據(jù)指定的比較器進(jìn)行排序。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
comparator | 將用于排序此優(yōu)先級隊列的比較器。 如果為 null,則將使用元素的 Comparable。 |
public PriorityQueue(int initialCapacity, Comparator<? super E> comparator)
創(chuàng)建一個具有指定初始容量的 PriorityQueue,它根據(jù)指定的比較器對其元素進(jìn)行排序。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
initialCapacity | 此優(yōu)先級隊列的初始容量 |
comparator | 將用于排序此優(yōu)先級隊列的比較器。 如果為 null,則將使用元素的 Comparable。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果 initialCapacity 小于 1 |
public PriorityQueue(Collection<? extends E> c)
創(chuàng)建一個包含指定集合中元素的 PriorityQueue。 如果指定的集合是一個 SortedSet 的實(shí)例或者是另一個 PriorityQueue,那么這個優(yōu)先級隊列將按照相同的順序進(jìn)行排序。 否則,此優(yōu)先級隊列將根據(jù)其元素的 Comparable 進(jìn)行排序。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
c | 將其元素放入此優(yōu)先級隊列的集合 |
Throws:
Throw名稱 | Throw描述 |
---|---|
ClassCastException | 如果指定集合的元素不能根據(jù)優(yōu)先級隊列的順序相互比較 |
NullPointerException | 如果指定的集合或其任何元素為空 |
public PriorityQueue(PriorityQueue<? extends E> c)
創(chuàng)建一個包含指定優(yōu)先級隊列中元素的 PriorityQueue。 此優(yōu)先級隊列將按照與給定優(yōu)先級隊列相同的順序進(jìn)行排序。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
c | 將其元素放入此優(yōu)先級隊列的優(yōu)先級隊列 |
Throws:
Throw名稱 | Throw描述 |
---|---|
ClassCastException | 如果 c 的元素不能根據(jù) c 的順序相互比較 |
NullPointerException | 如果指定的優(yōu)先級隊列或其任何元素為空 |
public PriorityQueue(SortedSet<? extends E> c)
創(chuàng)建一個包含指定排序集中元素的 PriorityQueue。 此優(yōu)先級隊列將按照與給定排序集相同的順序進(jìn)行排序。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
c | 將其元素放入此優(yōu)先級隊列的有序集合 |
Throws:
Throw名稱 | Throw描述 |
---|---|
ClassCastException | 如果指定的有序集合的元素不能根據(jù)有序集合的順序相互比較 |
NullPointerException | 如果指定的排序集或其任何元素為空 |
public boolean add(E e)
將指定元素插入此優(yōu)先級隊列。
指定者:
添加接口CollectionE
指定者:
添加接口QueueE
覆蓋:
添加類 AbstractQueueE
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
e | 要添加的元素 |
返回:
true(由 Collection#add 指定)
Throws:
Throw名稱 | Throw描述 |
---|---|
ClassCastException | 如果指定的元素不能根據(jù)優(yōu)先級隊列的順序與當(dāng)前在此優(yōu)先級隊列中的元素進(jìn)行比較 |
NullPointerException | 如果指定元素為空 |
public boolean offer(E e)
將指定元素插入此優(yōu)先級隊列。
指定者:
接口QueueE中的offer
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
e | 要添加的元素 |
返回:
true(由 Queue#offer 指定)
Throws:
Throw名稱 | Throw描述 |
---|---|
ClassCastException | 如果指定的元素不能根據(jù)優(yōu)先級隊列的順序與當(dāng)前在此優(yōu)先級隊列中的元素進(jìn)行比較 |
NullPointerException | 如果指定元素為空 |
public E peek()
從接口復(fù)制的描述:隊列
檢索但不刪除此隊列的頭部,如果此隊列為空,則返回 null。
指定者:
查看接口 QueueE
返回:
此隊列的頭部,如果此隊列為空,則返回 null
public boolean remove(Object o)
從此隊列中移除指定元素的單個實(shí)例(如果存在)。 更正式地說,如果該隊列包含一個或多個這樣的元素,則刪除一個元素 e 使得 o.equals(e)。 當(dāng)且僅當(dāng)此隊列包含指定元素時(或等效地,如果此隊列因調(diào)用而更改)返回 true。
指定者:
在接口 CollectionE 中刪除
覆蓋:
在類 AbstractCollectionE 中刪除
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
o | 要從此隊列中刪除的元素(如果存在) |
返回:
如果此隊列因調(diào)用而更改,則為 true
public boolean contains(Object o)
如果此隊列包含指定元素,則返回 true。 更正式地說,當(dāng)且僅當(dāng)此隊列包含至少一個元素 e 使得 o.equals(e) 時才返回 true。
指定者:
包含在接口 CollectionE 中
覆蓋:
包含在類 AbstractCollectionE 中
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
o | 要檢查此隊列中包含的對象 |
返回:
如果此隊列包含指定元素,則為 true
public Object[] toArray()
返回一個包含此隊列中所有元素的數(shù)組。 元素沒有特定的順序。
返回的數(shù)組將是“安全的”,因?yàn)樵撽犃胁痪S護(hù)對它的引用。 (換句話說,這個方法必須分配一個新數(shù)組)。 因此,調(diào)用者可以自由修改返回的數(shù)組。
此方法充當(dāng)基于數(shù)組和基于集合的 API 之間的橋梁。
指定者:
接口 CollectionE 中的 toArray
覆蓋:
AbstractCollectionE 類中的 toArray
返回:
包含此隊列中所有元素的數(shù)組
public <T> T[] toArray(T[] a)
返回一個包含此隊列中所有元素的數(shù)組; 返回數(shù)組的運(yùn)行時類型是指定數(shù)組的運(yùn)行時類型。 返回的數(shù)組元素沒有特定的順序。 如果隊列適合指定的數(shù)組,則在其中返回。 否則,將使用指定數(shù)組的運(yùn)行時類型和此隊列的大小分配一個新數(shù)組。
如果隊列適合指定的數(shù)組并有剩余空間(即,數(shù)組的元素多于隊列),則數(shù)組中緊跟集合末尾的元素設(shè)置為 null。
與 toArray() 方法一樣,此方法充當(dāng)基于數(shù)組的 API 和基于集合的 API 之間的橋梁。 此外,此方法允許對輸出數(shù)組的運(yùn)行時類型進(jìn)行精確控制,并且在某些情況下可用于節(jié)省分配成本。
假設(shè) x 是一個已知僅包含字符串的隊列。 以下代碼可用于將隊列轉(zhuǎn)儲到新分配的 String 數(shù)組中:
String[] y = x.toArray(new String[0]);
請注意,toArray(new Object[0]) 在功能上與 toArray() 相同。
指定者:
接口 CollectionE 中的 toArray
覆蓋:
AbstractCollectionE 類中的 toArray
類型參數(shù):
類型參數(shù)名稱 | 類型參數(shù)描述 |
---|---|
T | 包含集合的數(shù)組的運(yùn)行時類型 |
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
a | 存儲隊列元素的數(shù)組,如果它足夠大的話; 否則,將為此目的分配相同運(yùn)行時類型的新數(shù)組。 |
返回:
包含此隊列中所有元素的數(shù)組
Throws:
Throw名稱 | Throw描述 |
---|---|
ArrayStoreException | 如果指定數(shù)組的運(yùn)行時類型不是此隊列中每個元素的運(yùn)行時類型的超類型 |
NullPointerException | 如果指定的數(shù)組為空 |
public IteratorE iterator()
返回此隊列中元素的迭代器。 迭代器不會以任何特定順序返回元素。
指定者:
接口 CollectionE 中的迭代器
指定者:
接口 IterableE 中的迭代器
指定者:
AbstractCollectionE 類中的迭代器
返回:
此隊列中元素的迭代器
public int size()
從接口復(fù)制的描述:集合
返回此集合中的元素數(shù)。 如果此集合包含多個 Integer.MAX_VALUE 元素,則返回 Integer.MAX_VALUE。
指定者:
接口 CollectionE 中的大小
指定者:
AbstractCollectionE 類中的大小
返回:
此集合中的元素數(shù)
public void clear()
從此優(yōu)先級隊列中刪除所有元素。 此調(diào)用返回后,隊列將為空。
指定者:
在界面 CollectionE 中清除
覆蓋:
在類 AbstractQueueE 中清除
public E poll()
從接口復(fù)制的描述:隊列
檢索并刪除此隊列的頭部,如果此隊列為空,則返回 null。
指定者:
在接口 QueueE 中輪詢
返回:
此隊列的頭部,如果此隊列為空,則返回 null
public Comparator<? super E> comparator()
返回用于對該隊列中的元素進(jìn)行排序的比較器,如果此隊列根據(jù)其元素的 Comparable 進(jìn)行排序,則返回 null。
返回:
用于排序此隊列的比較器,如果此隊列根據(jù)其元素的自然順序排序,則為 null
public final SpliteratorE spliterator()
在此隊列中的元素上創(chuàng)建一個后期綁定和快速失敗的拆分器。
Spliterator 報告 Spliterator#SIZED、Spliterator#SUBSIZED 和 Spliterator#NONNULL。 覆蓋實(shí)現(xiàn)應(yīng)記錄附加特征值的報告。
指定者:
接口 CollectionE 中的分離器
指定者:
接口 IterableE 中的分離器
返回:
在此隊列中的元素上的 Spliterator
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: