我有一个关于番石榴多重映射的问题。文档有些含糊不清。对于多图中的put-Method,eclise给出了这样的解释:
将指定的值与此映射中的指定键相关联 (可选操作)。如果地图以前包含映射 键,旧值由指定值替换。
在multimap中存储键值对。 一些多图实现允许重复的键值对 哪个案例总是添加一个新的键值对并增加 多图大小由1.其他实现禁止重复,和 存储已存在于多图中的键值对无效。
eclipse中的解释很有意义,并解释了我的值被覆盖的原因,但文档说明可以为一个键存储多个值。
我给你看了一段我的代码:
public class Updatemanager {
static Map<String,Multimap<String,Values>> updateMap = new HashMap<String, Multimap<String, Values>>();
public static void collectUpdates(String name, String categorie, Values v)
{
Multimap<String, Values> mm = HashMultimap.create();
mm.put(categorie, v);
updateMap.put(name, mm);
}
我想要的输出如下:
{name={categorie1=[Values], categorie2 = [Values]}
现在它如何总是覆盖一个特定键的updateMap的内容。我怎么能做到,现在覆盖并只是添加到地图?
提前多多感谢。
答案 0 :(得分:4)
Multimap
工作得很好,但您要用Multimap
替换updateMap
中没有条目的全新Multimap
,然后在其中添加条目
看起来你想要
updateMap.get(name).put(categorie, v);
或者,如果您之前没有看过Multimap
,则需要创建新的name
,
if (!updateMap.containsKey(name)) {
updateMap.put(name, HashMultimap.<String, Values>create());
}
updateMap.get(name).put(categorie, v);