java - 如何正确合并 Hashmap<String, ArrayList<Object>> 和 HashMap<String, Object>

标签 java arraylist hashmap

我想让我的代码干净,但有以下问题。我要添加

HashMap<String,Object> currentItem;

到我的存储

HashMap<String, ArrayList<Object>> storage;

通过以下方式:

添加全部ObjectcurrentItemArrayList<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/

相关文章:

java - 在 javafx 中使用 OnMousePressed 将两个 obj 放在彼此之上

Java 数组列表和对象传递

c++ - 为什么LLVM选择开放寻址哈希表来实现llvm::StringMap?

java - 有效的方法反转来反转 HashMap ,其中少量的键映射到相同的值

java - Maven 忽略本地存储库

java - 我需要为 org.apache.http.client.HttpClient 的 execute() 设置什么?

JavaFX引用主数组列表

java - 如何在 java 中创建 docx4j 对象列表?

hashmap - 如何更新可变 HashMap 中的值?

java - Jetty 响应字符编码