我有以下代码为树地图,我存储重复的键,它似乎覆盖现有的。TreeMap中的重复键
TreeMap<String, Integer> tm=new TreeMap<>();
tm.put("vivek", 1);
tm.put("vivek", 2);
System.out.println(tm);
它打印{vivek=2}
那么它意味着地图允许覆盖基于关键?
我有以下代码为树地图,我存储重复的键,它似乎覆盖现有的。TreeMap中的重复键
TreeMap<String, Integer> tm=new TreeMap<>();
tm.put("vivek", 1);
tm.put("vivek", 2);
System.out.println(tm);
它打印{vivek=2}
那么它意味着地图允许覆盖基于关键?
TreeMap#public V put(K key, V value)
API说
将指定值与此映射中指定的键。 如果映射先前包含密钥的映射,则旧值将被替换。
所有地图共享相同的基本属性,其中之一是所有密钥必须是唯一的。因此为什么keySet()
返回Set
。
要做你正在寻找的你需要一个Multimap - 这本质上是一个Map到列表。
Map<Integer, List<String>> multiMap;
要添加对象获取列表为关键,如果是零添加列表,然后你的价值添加到列表中,否则只是你的价值添加到现有的列表。
在各种第三方库中都有一些multimap实现,或者很容易实现您自己的。
请阅读'TreeMap'的javadoc。 –
*将键映射到值的对象。地图不能包含重复的键;每个键最多只能映射一个值。* - [Map接口]的第一行(http://docs.oracle.com/javase/7/docs/api/java/util/Map.html)。 – SudoRahul
地图的目的是表示一系列键/值条目,其中每个键是*唯一的* ... – assylias