В настоящее время у меня есть метод, который использует 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, но мои попытки делают процесс более запутанным.Что является более декларативным, кратким способом делать то, что я хочу сделать?