更新時(shí)間:2020-04-14 13:12:07 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2916次
PriorityQueue屬于Java集合框架。PriorityQueue基于優(yōu)先級(jí)堆,它是隊(duì)列接口的實(shí)現(xiàn)。當(dāng)我們需要Queue實(shí)現(xiàn)時(shí),可以使用此數(shù)據(jù)結(jié)構(gòu),并且我們需要根據(jù)每個(gè)元素的優(yōu)先級(jí)以特定的排序順序維護(hù)該集合的元素。它是在JDK1.5中引入的。

JavaPriorityQueue關(guān)鍵點(diǎn)
實(shí)例化PriorityQueue時(shí),可以在構(gòu)造函數(shù)中提供比較器。然后隊(duì)列中的項(xiàng)目順序?qū)⒏鶕?jù)提供的比較器決定。
如果沒(méi)有提供比較器,則將使用該集合的自然順序(Comparable)來(lái)對(duì)元素進(jìn)行排序。
這個(gè)集合中不允許null。
隊(duì)列頭是訂單中最少的項(xiàng)目。
PriorityQueue元素之間的排序關(guān)系是任意決定的。
PriorityQueue不同步。PriorityBlockingQueue是PriorityQueue的線程安全對(duì)象。
PriorityQueue是無(wú)限的,它根據(jù)隊(duì)列中元素的數(shù)量動(dòng)態(tài)增長(zhǎng)。它在任何時(shí)候都具有內(nèi)部容量,并隨著元素的添加而增加。這種內(nèi)部能力和增量的政策沒(méi)有具體規(guī)定或標(biāo)準(zhǔn)化。
此PriorityQueue的iterator()不保證以任何特定順序遍歷隊(duì)列元素。
表現(xiàn)明智;remove()和contains()方法需要線性時(shí)間。peek(),element()和size()需要固定的時(shí)間。offer(),poll()和remove()需要O(logn)時(shí)間。
offer()和add()是Queue接口的方法,由PriorityQueue實(shí)現(xiàn)。這些被用于隊(duì)列中的元素插入。它們的表現(xiàn)與PriorityQueue相同,兩者沒(méi)有區(qū)別。
PriorityQueue示例
以下示例說(shuō)明了我們?nèi)绾问褂肑avaPriorityQueue集合。
PriorityQueueExample.java

VowelComparator.java
此比較器類用于確定上述PriorityQueue的排序順序。

PriorityQueue示例輸出
fig
lemon
orange
watermelon
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java基礎(chǔ)學(xué)習(xí):java優(yōu)先級(jí)隊(duì)列”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)