TreeMap中的重复键

时间:2014-02-13 09:01:20

标签: java

我有下面的树图代码,我存储了重复的密钥,它似乎覆盖了现有密码。

TreeMap<String, Integer> tm=new TreeMap<>();
tm.put("vivek", 1);
tm.put("vivek", 2);
System.out.println(tm);

它打印{vivek=2}所以它意味着map允许在密钥的基础上覆盖?

2 个答案:

答案 0 :(得分:13)

所有地图共享相同的基本属性,其中之一是所有键必须是唯一的。因此,为什么keySet()会返回Set

要做你想要的东西,你需要一个Multimap--它本质上是一个List to List。

Map<Integer, List<String>> multiMap;

要添加对象,请获取该键的列表,如果为null,则添加列表,然后将值添加到列表中,否则只需将值添加到现有列表中。

在各种第三方库中都有一些多图表实现,或者很容易实现自己的。

答案 1 :(得分:12)

TreeMap#public V put(K key, V value) API说

  

将指定的值与此映射中的指定键相关联。   如果地图以前包含该键的映射,则替换旧值。