我需要维护表单的排序集合...
Order(id: Long, price: Long, quantity: Long)
...其中order.price
是定义集合顺序的变量。我还需要通过order
查找order.id
并将其从集合中删除。
我最初尝试mutable.PriorityQueue
,但无法弄清楚如何查找和删除订单。然后我转移到immutable.TreeSet
,但TreeSet
认为订单价格相同duplicates
并丢弃其中一个订单。我曾考虑使用immutable.TreeMap
,但该集合会对键进行排序,而我的订单的自然键为id
而不是price
。
我应该使用哪些收藏品?理想的集合似乎是一个Map,其中排序顺序是通过键定义的。据我所知,这不存在。
答案 0 :(得分:0)
我相信没有任何收藏完全符合您的提及。
您可以继承java的LinkedHashMap。它使项目可以通过密钥访问,但保留内部节点的链接列表以具有稳定的顺序。该实现使用了插入顺序(最有效,因为您只是附加到基础链接列表),但您可以自定义它以基于自定义Comparator在喜欢的列表上执行插入(因此插入将是O(n))。希望它有所帮助!