我想要一个可以整理出来的Map<Integer, String>
。我曾尝试使用TreeMap<Integer, String>
,但每个元素只存储一个键,我希望有多个相同的键元素。
例如,当我添加:
map.put(1, "Daniel");
map.put(3, "Monica");
map.put(4, "Pinto");
map.put(3, "Lucia");
然后打印所有元素,TreeMap
显示为:
1丹尼尔 3露西亚
4 Pinto
我希望它打印出来:
1丹尼尔 3莫妮卡
3露西亚
4 Pinto
我应该使用哪种数据类型?
答案 0 :(得分:2)
地图中的键是唯一的,因此您只能将一个值与每个键相关联。这就是为什么你的键“3”在输出中只出现一次。
根据您的要求,似乎有两种解决方案:
SortedSet
,使用Integer
和String
的复合元素与自定义Comparator
一起使用List<String>
。这样,“3 Monica”和“3 Lucia”将构成您收藏的完全独立元素。它会匹配你的输出,因为集合中的每个元素都是你问题中显示的输出中的一行,但感觉有点笨拙,很可能不是你想要的。Map<Integer,List<String>>
,所以你会有一个put
。然后,您无法使用List
方法添加到该列表,但您需要使用自己的方法来懒惰地检索或创建{{1}},并附加新元素。然后该集合看起来像这样:
1,[丹尼尔]
3,[莫妮卡,露西亚]
4,[平托]
答案 1 :(得分:1)
使用MultiMap - 一个包含每个键的值集合的映射。
MultiMap mhm = new MultiHashMap();
mhm.put(key, "A");
mhm.put(key, "B");
mhm.put(key, "C");
Collection coll = (Collection) mhm.get(key);
coll将是一个包含&#34; A&#34;,&#34; B&#34;,&#34; C&#34;。
的集合