当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。