Вместо этого вы можете использовать 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