如何自定义Scala PrioriryQueue以处理重复项?

问题描述 投票:0回答:1

我有一个要放入PriorityQueue [OrderQueue]的订单列表,价格用于确定订单,价格越低,orderQueue越高。 PriorityQueue的每个元素都是一个OrderQueue,以便它可以以相同的价格处理订单。如果价格相同,则应将订单追加到OrderQueue的末尾。是否可以使用标准PriorityQueue来实现?如果没有,我是否必须从头开始实现Heap?

scala priority-queue
1个回答
0
投票

您可以改用TreeMap。它作为堆实现,因此应具有相同的性能特征。它支持headheadOption同时的SortedMapupdate操作。

type Price = Long
type Order = String
val queue = new mutable.TreeMap[Price, mutable.Queue[Order]]()
val subQueue: mutable.Queue[Order] = queue.getOrElseUpdate(100L, mutable.Queue.empty)
val highestPriority: Option[(Price, mutable.Queue[Order])] = queue.headOption
© www.soinside.com 2019 - 2024. All rights reserved.