gpt4 book ai didi

lambda - 合并两个 Map> 类型的 Map

转载 作者:行者123 更新时间:2023-12-02 03:34:04 24 4
gpt4 key购买 nike

我有两张 Map<String, Set<String>> 类型的 map 我需要根据每个的键进行合并。我正在使用 Java 8。

我尝试过以下方法:

Map<String, Set<String>> collect = Stream.of(keyColumnValueAccumulator, keyColumnValues)
.map(Map::entrySet)
.flatMap(Collection::stream)
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue));

但在运行时这会导致“重复 key ”错误。请问有人可以帮忙吗?我对 Java 8 和 Stream API 还很陌生

最佳答案

您还可以使用Map::merge避免重复键错误的方法。

示例:

Map<String, Set<String>> accumulator = new HashMap<>();
firstMap.forEach((k, v) -> accumulator.merge(k, v, (prev, cur) -> {prev.addAll(cur); return prev;}));
secondMap.forEach((k, v) -> accumulator.merge(k, v, (prev, cur) -> {prev.addAll(cur); return prev;}));

在发生按键冲突的情况下,我们只需将两个集合累积为一个集合,但如果这不是所需的行为,您可以随时更改它或为 remappingFunction 创建自定义函数。

关于lambda - 合并两个 Map<String, Set<String>> 类型的 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50863548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com