要将 value 为 Set 集合的 Map 合并,可以使用 Java 8 的 Stream API 来完成。

假设要合并的两个 Map 为 map1 和 map2,它们的 value 都是 Set 集合。首先创建一个新的 Map,然后遍历 map1 和 map2,将它们的 key 和 value 合并到新的 Map 中。

以下是一个示例代码:

import java.util.*;

public class MergeMap {
    public static void main(String[] args) {
        Map<String, Set<Integer>> map1 = new HashMap<>();
        map1.put('A', new HashSet<>(Arrays.asList(1, 2, 3)));
        map1.put('B', new HashSet<>(Arrays.asList(4, 5, 6)));

        Map<String, Set<Integer>> map2 = new HashMap<>();
        map2.put('A', new HashSet<>(Arrays.asList(7, 8, 9)));
        map2.put('C', new HashSet<>(Arrays.asList(10, 11, 12)));

        Map<String, Set<Integer>> mergedMap = mergeMaps(map1, map2);
        System.out.println(mergedMap);
    }

    public static <K, V> Map<K, Set<V>> mergeMaps(Map<K, Set<V>> map1, Map<K, Set<V>> map2) {
        Map<K, Set<V>> mergedMap = new HashMap<>(map1);

        map2.forEach((key, value) ->
                mergedMap.merge(key, value, (v1, v2) -> {
                    v1.addAll(v2);
                    return v1;
                }));

        return mergedMap;
    }
}

输出结果为:

{A=[1, 2, 3, 7, 8, 9], B=[4, 5, 6], C=[10, 11, 12]}

在上述代码中,我们首先创建了两个 Map:map1 和 map2,它们的 value 都是 Set 集合。然后定义了一个 mergeMaps 方法,该方法接受两个 Map 作为参数,并返回合并后的 Map。在 mergeMaps 方法中,我们首先创建了一个新的 Map mergedMap,并将 map1 的内容复制到 mergedMap 中。然后使用 forEach 方法遍历 map2,对于 map2 中的每个 key 和 value,使用 merge 方法将其合并到 mergedMap 中。如果 key 在 mergedMap 中已存在,就将 value 添加到已存在的 Set 集合中;如果 key 在 mergedMap 中不存在,就将 key 和 value 添加到 mergedMap 中。

最后,我们调用 mergeMaps 方法将 map1 和 map2 合并到 mergedMap 中,并打印出 mergedMap 的内容。

Java 8 Stream API 合并 Map 集合:Value 为 Set 的高效方法

原文地址: https://www.cveoy.top/t/topic/quyq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录