0
我在Scala中有一个优先队列,我在下面定义。我的目标是,当我打电话出队时,我会得到三联中拥有最少三分之一的三联。我认为使用Ordering是要走的路,但我似乎无法让它起作用。创建一个包含三元组的PriorityQueue,并返回Scala中最小的第三个元素?
import scala.collection.mutable.PriorityQueue
def orderByWeight(lst : (Int, Int, Int)) = lst._3
val pq = new PriorityQueue[(Int, Int, Int)]()(Ordering.by(orderByWeight))
var x = ListBuffer((0,1,2), (0,2,3), (0,3,4))
x.map(i => pq.enqueue(i))
我很困惑我的orderByWeight
函数应该是什么。对于上面的代码,如果我拨打pq.dequeue
,则所需的输出应为(0, 1, 2)
。注意x
是随机排列的。有任何想法吗?