我想让我的代码干净添加有以下麻烦。我想添加
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键的这个。我可以编写重复代码的特殊功能,但我希望它可以更容易地解决。
感谢。
答案 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);
}
}