TreeMap中的重复键

zdh*_*him 10 java

我有以下代码用于存储重复键的树形图,它似乎覆盖了现有的密钥.

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

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

Tim*_*m B 14

所有映射共享相同的基本属性,其中之一是所有键必须是唯一的.因此为什么要keySet()回归Set.

要做你想要的东西,你需要一个Multimap--它实际上是一个List to Map.

Map<Integer, List<String>> multiMap;
Run Code Online (Sandbox Code Playgroud)

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

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


Abi*_*san 13

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

将指定的值与此映射中的指定键相关联. 如果映射先前包含键的映射,则替换旧值.