使用PriorityQueue
我们知道,
Queue
是一个先进先出(FIFO)的队列。在银行柜台办业务时,我们假设只有一个柜台在办理业务,但是办理业务的人很多,怎么办?
可以每个人先取一个号,例如:
A1
、A2
、A3
……然后,按照号码顺序依次办理,实际上这就是一个Queue
。如果这时来了一个VIP客户,他的号码是
V1
,虽然当前排队的是A10
、A11
、A12
……但是柜台下一个呼叫的客户号码却是V1
。这个时候,我们发现,要实现“VIP插队”的业务,用
Queue
就不行了,因为Queue
会严格按FIFO的原则取出队首元素。我们需要的是优先队列:PriorityQueue
。PriorityQueue
和Queue
的区别在于,它的出队顺序与元素的优先级有关,对PriorityQueue
调用remove()
或poll()
方法,返回的总是优先级最高的元素。