我有一张地图
Map<Integer, List<Object>> entireData;
Run Code Online (Sandbox Code Playgroud)
现在我要使用putAll添加一些数据
entireData.putAll(someData);
Run Code Online (Sandbox Code Playgroud)
someData返回的位置 Map<Integer, List<Object>>
现在,我有另一条线说
entireData.putAll(someMoreData);
Run Code Online (Sandbox Code Playgroud)
也会返回Map<Integer, List<Object>>
,但通过执行此操作会覆盖现有wholeData的内容,如何追加?
Java Map Class Reference的第一行:
将键映射到值的对象.地图不能包含重复的键; 每个键最多可以映射一个值.
你想要一个Multimap之从谷歌番石榴.使用Guava Multimap重写您的示例:
ListMultimap<Integer, Object> entireData = ArrayListMultimap.create();
Run Code Online (Sandbox Code Playgroud)
entireData.get(key)
返回一个List<Object>
.putAll
不会覆盖旧密钥,但会将这些密钥的值附加到现有值.这比处理List
自己初始化实例要好得多.
for (Integer key : someMoreData.keySet())
{
if (entireData.containsKey(key))
{
entireData.get(key).addAll(someMoreData.get(key));
}
else
{
entireData.put(key, someMoreData.get(key));
}
}
Run Code Online (Sandbox Code Playgroud)