我在我的应用程序中使用TreeMap类来存储消息信息及其优先级.我使用了一个treeMap类来做它,因为这个类根据键值自动命令元素,例如我有这样的情况:
enum Priority { HIGH, MEDIUM, LOW }
TreeMap<Priority,String> tMap = new TreeMap<Priority,String>();
Run Code Online (Sandbox Code Playgroud)
我使用密钥(消息的优先级)根据优先级严重性自动排序消息,但问题是在TreeMap中密钥是唯一的,如果我尝试插入两个具有相同优先级的消息,则第一个被覆盖... .
如何更改此行为并禁用TreeMap上的唯一约束?
是否有类似TreeMap的类允许为多个元素放置相同的键?
如何更改此行为并禁用TreeMap上的唯一约束?
你不能.键的唯一性是Map接口的基本不变量.
是否有类似TreeMap的类允许为多个元素放置相同的键?
您可以将其实现为a Map<Priority,List<String>>并自行管理列表.如果(例如)您希望以fifo顺序处理给定优先级的消息,则这是一个很好的选择.
或者,你可以使用一个MultiMap类; 例如来自Apache commons collection或Guava.