scala.collection.mutable.PriorityQueue的订购方式如何?

时间:2018-04-17 03:41:43

标签: scala data-structures

implicit val ord:Ordering[String] = Ordering.by(_.length)
var nameQueue = new PriorityQueue[String]()
nameQueue.+=("SINES","YINE","WIRAEUS")
nameQueue.foreach(println)

,输出为:

WIRAEUS
YINE
SINES

这似乎令人困惑。任何人都可以帮助解释排序的机制吗?

1 个答案:

答案 0 :(得分:5)

来自PriorityQueue ScalaDocs page

  

只有 dequeue dequeueAll 方法才会按优先级顺序返回元素(同时从堆中删除元素)。标准收集方法(包括 drop 迭代器 toString )将以最方便的顺序删除或遍历堆。

     

因此,打印 PriorityQueue 不会显示元素的优先顺序,但会先打印最高优先级的元素。