Scala中的订单排序集合

时间:2015-11-19 11:08:40

标签: scala sorting scala-collections

我需要维护表单的排序集合...

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

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

我最初尝试mutable.PriorityQueue,但无法弄清楚如何查找和删除订单。然后我转移到immutable.TreeSet,但TreeSet认为订单价格相同duplicates并丢弃其中一个订单。我曾考虑使用immutable.TreeMap,但该集合会对键进行排序,而我的订单的自然键为id而不是price

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

1 个答案:

答案 0 :(得分:0)

我相信没有任何收藏完全符合您的提及。

您可以继承java的LinkedHashMap。它使项目可以通过密钥访问,但保留内部节点的链接列表以具有稳定的顺序。该实现使用了插入顺序(最有效,因为您只是附加到基础链接列表),但您可以自定义它以基于自定义Comparator在喜欢的列表上执行插入(因此插入将是O(n))。希望它有所帮助!