Scala 中排序的订单集合

Sorted collection of orders in Scala

我需要维护一个排序的订单集合,格式为...

Order(id: Long, price: Long, quantity: Long)

...其中 order.price 是定义集合顺序的变量。我还需要查找 order.idorder 并将其从集合中删除。

我最初尝试了 mutable.PriorityQueue,但不知道如何查找和删除订单。然后我转到 immutable.TreeSet,但 TreeSet 考虑了具有相同价格 duplicates 的订单并放弃了其中一个。我曾考虑过使用 immutable.TreeMap,但该集合对键进行排序,而我的订单的自然键是 id 而不是 price

我应该使用什么集合?理想的集合似乎是一个 Map,其中排序顺序是通过键定义的。据我所知,这不存在。

我相信没有完全符合您提到的功能的集合。

您或许可以继承 java 的 LinkedHashMap。它使项可以通过键访问,但保留内部节点的链表以具有稳定的排序。该实现使用插入顺序(最有效,因为您只需附加到底层链表),但您可以自定义它以根据自定义比较器在喜欢的列表上进行插入(因此插入将是 O(n))。希望对您有所帮助!