我试图为地图中的键提供多个值。我想让这种东西起作用..mapp.put("key1","value1") mapp.put("key1","value2")。第一个值“value1”被“value2”覆盖。如何保留这两个值?我应该去寻找除地图之外的任何其他东西来实现这一点吗?
问问题
176 次
5 回答
2
将两个 valyes 放入另一个集合(Vector、Set、Stack,任何适合您的用途;或其他任何东西),并将帽子集合作为值存储在地图中。
作为使用 Vector 的随机示例:
Vector<Object> myVector = new Vector<Object>();
myVector.add("value1");
myVector.add("value2");
mapp.put("key1", myVector);
于 2012-04-25T05:17:28.263 回答
1
从Map的Javadoc ,
A map cannot contain duplicate keys; each key can map to at most one value.
因此,如果要为单个键放置多个值,则需要将值添加到列表中,并将 key1 和列表放入映射中。
于 2012-04-25T05:23:14.047 回答
1
HashMap<K, HashSet<V>> map = new HashMap<K, HashSet<V>>();
if(!map.containsKey(k)) {
map.put(k, new HashSet<V>());
}
map.get(k).add(v);
如果您有重复的值,请使用列表/向量而不是哈希集。
于 2012-04-25T05:24:21.487 回答
1
您可以将 un map 与列表一起使用。像这样的东西:
Map<String, List<String>> map = new HashMap<String, List<String>>();
将 a 放入key1
第一个值:
if (!map.containsKey("key1")) {
map.put("key1", new LinkedList<String>());
}
map.get("key1").add("value1");
将第二个值添加到key1
map.get("key1").add("value2");
您可以通过一种方法获得所有这些
public void add(String key, String value) {
if (!map.containsKey(key)) {
map.put(key, new LinkedList<String>());
}
map.put(key, value);
}
如果您想要 的值key1
,您将获得List
List<String> values = map.get("key1");
于 2012-04-25T05:25:07.557 回答
0
如果您想要具有该行为的地图,还可以查看 Multimap
于 2012-04-25T05:20:30.010 回答