當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Scala mutable.PriorityQueue用法及代碼示例


用法 一

sealed class PriorityQueue[A](implicit val ord: Ordering[A]) extends AbstractIterable[A] with Iterable[A] with IterableOps[A, Iterable, PriorityQueue[A]] with StrictOptimizedIterableOps[A, Iterable, PriorityQueue[A]] with Builder[A, PriorityQueue[A]] with Cloneable[PriorityQueue[A]] with Growable[A] with Serializable

此類使用堆實現優先級隊列。要對類型 A 的元素進行優先級排序,必須有一個隱式的 Ordering[A] 在創建時可用。

如果多個元素在此 PriorityQueue 的排序中具有相同的優先級,則不保證 dequeuedequeueAll 返回元素的順序。特別是,這意味著此類不保證可能從此類名稱的 Queue 部分錯誤地推斷出的先進先出行為。

隻有 dequeuedequeueAll 方法會按優先級順序返回元素(同時從堆中刪除元素)。包括 dropiteratortoString 在內的標準收集方法將以最方便的順序刪除或遍曆堆。

因此,打印 PriorityQueue 不會顯示元素的優先級順序,盡管將首先打印 highest-priority 元素。要按順序打印元素,必須複製 PriorityQueue (例如,通過使用 clone )然後將它們出列:

類型參數:

A

此優先級隊列中元素的類型。

值參數:

ord

用於比較類型A的元素的隱式排序.

例子:

val pq = collection.mutable.PriorityQueue(1, 2, 5, 3, 7)
println(pq)                  // elements probably not in order
println(pq.clone.dequeueAll) // prints ArraySeq(7, 5, 3, 2, 1)

伴生:

object

源碼:

PriorityQueue.scala

用法 二

object PriorityQueue extends SortedIterableFactory[PriorityQueue]

伴生:

class

源碼:

PriorityQueue.scala

相關用法


注:本文由純淨天空篩選整理自scala-lang.org大神的英文原創作品 mutable.PriorityQueue。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。