我有一个要放入PriorityQueue [OrderQueue]的订单列表,价格用于确定订单,价格越低,orderQueue越高。 PriorityQueue的每个元素都是一个OrderQueue,以便它可以以相同的价格处理订单。如果价格相同,则应将订单追加到OrderQueue的末尾。是否可以使用标准PriorityQueue来实现?如果没有,我是否必须从头开始实现Heap?
您可以改用TreeMap
。它作为堆实现,因此应具有相同的性能特征。它支持head
和headOption
同时的SortedMap
和update
操作。
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