上節(jié)介紹了堆的基本概念和算法,本節(jié)我們來(lái)探討堆在Java中的具體實(shí)現(xiàn)類(lèi) - PriorityQueue。
我們先從基本概念談起,然后介紹其用法,接著分析實(shí)現(xiàn)代碼,最后總結(jié)分析其特點(diǎn)。
基本概念
顧名思義,PriorityQueue是優(yōu)先級(jí)隊(duì)列,它首先實(shí)現(xiàn)了隊(duì)列接口(Queue),與LinkedList類(lèi)似,它的隊(duì)列長(zhǎng)度也沒(méi)有限制,與一般隊(duì)列的區(qū)別是,它有優(yōu)先級(jí)的概念,每個(gè)元素都有優(yōu)先級(jí),隊(duì)頭的元素永遠(yuǎn)都是優(yōu)先級(jí)最高的。
PriorityQueue內(nèi)部是用堆實(shí)現(xiàn)的,內(nèi)部元素不是完全有序的,不過(guò),逐個(gè)出隊(duì)會(huì)得到有序的輸出。
雖然名字叫優(yōu)先級(jí)隊(duì)列,但也可以將Priorit