我想让我的代码干净,但有以下问题。我要添加
HashMap<String,Object> currentItem;
到我的存储
HashMap<String, ArrayList<Object>> storage;
通过以下方式:
添加全部Object
的currentItem
至ArrayList<Object>
的storage
根据按键(它们都是相同的)。
这是我的变体,如何根据键将 currentItem 添加到存储
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);
}
这对于每个 HashMap 键。我可以编写特殊的函数来重复代码,但我希望它可以更容易地解决。
谢谢。
最佳答案
这里需要注意的一点是,一旦修改了新的数组列表,就不需要再次放置它的映射。更改将自动反射(reflect)在 Map
中,因为您拥有的是对实际 ArrayList
对象的引用。
其次,您不需要执行所有硬编码
。您可以简单地迭代 currentItem
映射,并对于每个 key-value
对,检查 storage
中是否存在 key
code>,如果找到,则更新相应的List
。
具体操作方法如下:-
for (Entry<String, Object> entry: currentItem.entrySet()) {
if (storage.containsKey(entry.getKey()) {
storage.get(entry.getKey()).add(entry.getValue());
} else {
List<Object> newEntry = new ArrayList<Object>();
newEntry.add(entry.getValue());
storage.put(entry.getKey(), newEntry);
}
}
关于java - 如何正确合并 Hashmap<String, ArrayList<Object>> 和 HashMap<String, Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14800572/