没有唯一键的TreeMap

aleroot:

我使用TreeMap类在其应用程序中存储消息信息及其优先级。我使用treeMap类来执行此操作,因为此类基于键值自动对元素进行排序,例如,我遇到这种情况:

enum Priority { HIGH, MEDIUM, LOW }
TreeMap<Priority,String> tMap = new TreeMap<Priority,String>();

我使用密钥(消息的优先级)根据优先级的严重性自动排序消息,但是问题是,在TreeMap中,密钥是唯一的,如果我尝试插入两个具有相同优先级的消息,则第一个消息将被覆盖... 。

如何更改此行为并禁用TreeMap的唯一约束?

是否有像TreeMap这样的类,允许为多个元素放置相同的Key?

斯蒂芬·C:

如何更改此行为并禁用TreeMap的唯一约束?

你不能 键的唯一性是Map接口的基本不变性

是否有像TreeMap这样的类,允许为多个元素放置相同的Key?

您可以将其实现为a Map<Priority,List<String>>并自己管理列表。如果(例如)您要按fifo顺序处理给定优先级的消息,则这是一个不错的选择。

另外,您可以使用一个MultiMap类。例如来自Apache commons集合Guava

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章