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

yu.*_*sun 0 scala data-structures

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

输出是:

WIRAEUS
YINE
SINES
Run Code Online (Sandbox Code Playgroud)

这看起来令人困惑.任何人都可以帮助解释订购的机制吗?

jwv*_*wvh 5

PriorityQueue ScalaDocs页面.

只有dequeuedequeueAll方法将按优先级顺序返回元素(同时从堆中删除元素).包括drop,iteratortoString在内的标准集合方法将以最方便的顺序删除或遍历堆.

因此,打印PriorityQueue不会显示元素的优先级顺序,尽管将首先打印最高优先级的元素.