如何正确结合Hashmap <string,arraylist <object =“”>&gt;和HashMap <string,object =“”> </string,> </string,>

时间:2013-02-10 17:38:45

标签: java arraylist hashmap

我想让我的代码干净添加有以下麻烦。我想添加

HashMap<String,Object> currentItem;

到我的存储空间

HashMap<String, ArrayList<Object>> storage;

通过以下方式:

根据密钥将所有Object currentItem ArrayList<Object>添加到storage if (storage.containsKey("article_link")) {Object tmpObj; ArayList<Object> listTemp; tmpObj = currentItem.get("article_link"); listTemp = storage.get("article_link"); listTemp.add(tmpObj); storage.put("article_link", listTemp); tmpObj = o.get("image"); listTemp = storage.get("image"); listTemp.add(tmp); storage.put("image", rrr); } 。(它们都相同)。

这是我的变体,如何根据键

将currentItem添加到存储
{{1}}

和每个hashmap键的这个。我可以编写重复代码的特殊功能,但我希望它可以更容易地解决。

感谢。

3 个答案:

答案 0 :(得分:2)

这里需要注意的一点是,一旦修改它,就不需要再次为新的arraylist设置映射。更改将自动反映在Map中,因为您所拥有的是对实际ArrayList对象的引用。

其次,您不需要完成所有hard-coding。您可以简单地遍历currentItem地图,对于每个key-value对,检查key中是否存在storage,如果找到,只需更新相应的{{1} }}

这是你如何做到的: -

List

答案 1 :(得分:0)

for (Entry<String, Object> entry: currentItem.entrySet()) {
    if (!storage.containsKey(entry.getKey()) {
        storage.put(new ArrayList<Object>());
    }
    storage.get(entry.getKey()).put(entry.getValue());
}

答案 2 :(得分:0)

Set<Entry<String,Object> entries = currentItem.entrySet();
Iterator<Entry<String,Object>> i = entries.iterator();
while(i.hasNext()) {
    Entry<String,Object> e = i.next();
    if(storage.containsKey(e.getKey()) { 
        storage.get(e.getKey()).add(e.getValue());
    }
    else {
        ArrayList l = new ArrayList();
        l.add(e.getValue());
        storage.put(e.getKey(),l);
    }
}