use*_*040 8 scala priority-queue min-heap data-structures
val maxHeap = scala.collection.mutable.PriorityQueue[Int] //Gives MaxHeap
Run Code Online (Sandbox Code Playgroud)
使用Ordering将PriorityQueue转换为minHeap最简洁有效的方法是什么?
Mar*_*rth 15
你必须定义自己的Ordering:
scala> object MinOrder extends Ordering[Int] {
def compare(x:Int, y:Int) = y compare x
}
defined object MinOrder
Run Code Online (Sandbox Code Playgroud)
然后在创建堆时使用它:
scala> val minHeap = scala.collection.mutable.PriorityQueue.empty(MinOrder)
minHeap: scala.collection.mutable.PriorityQueue[Int] = PriorityQueue()
scala> minHeap.ord
res1: Ordering[Int] = MinOrder$@158ac84e
Run Code Online (Sandbox Code Playgroud)