我有一张地图
Map<Integer, List<Object>> entireData;现在,我使用putAll添加了一些数据,比如
entireData.putAll(someData);其中someData返回Map<Integer, List<Object>>
现在,我有另一句话说
entireData.putAll(someMoreData);这也会返回Map<Integer, List<Object>>,但是通过这样做,它会覆盖现有entireData的内容,我该如何追加呢?
发布于 2011-01-06 17:24:03
Java Map Class Reference的第一行:
将键映射到值的对象。映射不能包含重复的键;每个键最多只能映射到一个值。
发布于 2011-01-06 17:29:44
你需要一个来自Google Guava的Multimap。使用Guava Multimap重写示例:
ListMultimap<Integer, Object> entireData = ArrayListMultimap.create();entireData.get(key)返回一个List<Object>。putAll不会覆盖旧的键,但会将这些键的值附加到现有值中。这也比自己处理初始化List实例要好得多。
发布于 2011-01-06 17:30:22
for (Integer key : someMoreData.keySet())
{
    if (entireData.containsKey(key))
    {
        entireData.get(key).addAll(someMoreData.get(key));
    }
    else
    {
        entireData.put(key, someMoreData.get(key));
    }
}https://stackoverflow.com/questions/4613386
复制相似问题