TreeMap没有唯一键

ale*_*oot 3 java jdk1.6

我在我的应用程序中使用TreeMap类来存储消息信息及其优先级.我使用了一个treeMap类来做它,因为这个类根据键值自动命令元素,例如我有这样的情况:

enum Priority { HIGH, MEDIUM, LOW }
TreeMap<Priority,String> tMap = new TreeMap<Priority,String>();
Run Code Online (Sandbox Code Playgroud)

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

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

是否有类似TreeMap的类允许为多个元素放置相同的键?

Ste*_*n C 8

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

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

是否有类似TreeMap的类允许为多个元素放置相同的键?

您可以将其实现为a Map<Priority,List<String>>并自行管理列表.如果(例如)您希望以fifo顺序处理给定优先级的消息,则这是一个很好的选择.

或者,你可以使用一个MultiMap类; 例如来自Apache commons collectionGuava.