将HashMap添加到另一个HashMap

时间:2014-12-14 16:02:18

标签: java android android-intent hashmap

当我尝试将hashMap添加到另一个HashMap时,我失去了旧的可变性。我该如何解决这个问题?我的代码是这样的。

HashMap<String, String> tmp = new HashMap<String, String>();
HashMap<String, String> map = new HashMap<String, String>();

tmp = ((HashMap<String, String>)intent.getSerializableExtra("map"));
map.putAll(tmp);

当我使用此代码时,map元素始终等于tmp元素。它不存储旧元素。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

HashMap<String, String> map = new HashMap<String, String>();创建一个新的空HashMap实例。因此,在致电map.putAll(tmp)后,您的地图只会包含tmp

的条目

如果map有先前的条目,则不应为此变量分配新实例。

也就是说,即使map有先前的条目,将tmp的条目放入其中也会覆盖map和{{1}中存在的所有密钥的值}。

答案 1 :(得分:0)

一旦您将地图更新为每次都不重新初始化,您可以通过循环覆盖来避免覆盖地图中的任何现有键值对:

for (String key : tmp.keySet()) {
    if (!map.containsKey(key)) {
        map.put(key, tmp.get(key);
    }
}

我不确定你的问题是否这正是你所要求的,但它可能有用。如果你想为每个密钥存储多个字符串,Eran的建议(使用HashMap<String, List<String>>)也是一个很好的建议。