【问题标题】:How to customize Scala PrioriryQueue to handle duplicates?如何自定义 Scala PrioriryQueue 来处理重复项?
【发布时间】:2020-04-25 14:50:58
【问题描述】:

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

【问题讨论】:

    标签: scala priority-queue


    【解决方案1】:

    您可以改用TreeMap。它是作为堆实现的,因此应该具有相同的性能特征。 它支持来自SortedMap 和同时updateheadheadOption 操作。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-12
      • 2019-12-22
      • 2021-11-22
      • 2010-12-31
      • 2020-12-13
      • 2013-06-17
      • 1970-01-01
      相关资源
      最近更新 更多