我目前有一个使用 scala.collection.mutable.PriorityQueue 以特定顺序组合元素的方法。例如,代码看起来有点像这样:
def process[A : Ordering](as: Set[A], f: (A, A) => A): A = {
val queue = new scala.collection.mutable.PriorityQueue[A]() ++ as
while (queue.size > 1) {
val a1 = queue.dequeue
val a2 = queue.dequeue
queue.enqueue(f(a1, a2))
}
queue.dequeue
}
代码按照编写的方式工作,但必须非常必要。我曾想过使用 SortedSet 而不是 PriorityQueue,但我的尝试让这个过程看起来更加混乱。什么是做我想做的事情的更明确、更简洁的方式?