我正在尝试构建一种方法来合并两个地图的内容。我在这里环顾了一段时间,找不到一种方法来使这个通用。@SuppressWarnings("unchecked")如果可能的话,我想避免使用注释。我有一个嵌套的映射结构,其中键是字符串,值是更多内容的映射,该结构中的“叶”节点始终被设置。所以在大多数情况下,我有两个结构如下的地图:
Map<String,Map<String,Set<String>>>
Run Code Online (Sandbox Code Playgroud)
我想要合并两个映射,以便最终得到两个映射的并集,并且这两个映射中的任何公共键都在结果映射中表示,其值是两个映射中的两个值的合并。在代码中,这是我迄今为止所拥有的:
@SuppressWarnings("unchecked")
public Map<String,Object> merge(final Map<String, Object> map1,
final Map<String, Object> map2) {
final Map<String,Object> merged = new HashMap<String,Object>(map1);
for (final Map.Entry<String,Object> entry : merged.entrySet()) {
final String key = entry.getKey();
final Object value = entry.getValue();
if (map2.containsKey(key)) {
final Object value2 = map2.get(key);
if ((value instanceof Map) && (value2 instanceof Map)) {
merged.put(key, merge((Map<String, Object>) value, (Map<String, Object>) value2));
} else if ((value instanceof Set) && (value2 instanceof Set)) {
final Set<Object> set = new …Run Code Online (Sandbox Code Playgroud)