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)
这看起来令人困惑.任何人都可以帮助解释订购的机制吗?
从PriorityQueue ScalaDocs页面.
只有dequeue和dequeueAll方法将按优先级顺序返回元素(同时从堆中删除元素).包括drop,iterator和toString在内的标准集合方法将以最方便的顺序删除或遍历堆.
因此,打印PriorityQueue不会显示元素的优先级顺序,尽管将首先打印最高优先级的元素.