2014-02-13 57 views
3

我有以下代码为树地图,我存储重复的键,它似乎覆盖现有的。TreeMap中的重复键

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

它打印{vivek=2}那么它意味着地图允许覆盖基于关键?

+5

请阅读'TreeMap'的javadoc。 –

+1

*将键映射到值的对象。地图不能包含重复的键;每个键最多只能映射一个值。* - [Map接口]的第一行(http://docs.oracle.com/javase/7/docs/api/java/util/Map.html)。 – SudoRahul

+0

地图的目的是表示一系列键/值条目,其中每个键是*唯一的* ... – assylias

回答

8

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

要做你正在寻找的你需要一个Multimap - 这本质上是一个Map到列表。

Map<Integer, List<String>> multiMap; 

要添加对象获取列表为关键,如果是零添加列表,然后你的价值添加到列表中,否则只是你的价值添加到现有的列表。

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