gpt4 book ai didi

java - 将两张不同类型的 map 合并为一张 map

转载 作者:行者123 更新时间:2023-11-29 04:05:10 25 4
gpt4 key购买 nike

我有两张不同类型的 map :

class Type3{
Type1 type1;
Type2 type2;

// getters and setters...

}


Map<Integer,Type1> map1;
Map<Integer,Type2> map2;

我想通过相同的键将它们合并到一张 map 中。喜欢他的:
Map<Integer,Type3> map3 = // merege map1,map2.

我该怎么做?

最佳答案

您可以使用 Stream 来实现:

Map<Integer,Type3> output =
map1.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey,
e -> new Type3(e.getValue(),map2.get(e.getKey()))));

假设 Type3 有一个构造函数接受一个 Type1 实例和一个 Type2 实例。

请注意,输出 Map 将仅包含出现在第一个 Map (map1) 中的键。

如果两个输入 Map 可能有另一个 map 中不存在的键,最好流式传输两个 Map 的键集的并集s,为了不跳过任何键:

Set<Integer> allKeys = new HashSet<> (map1.keySet());
allKeys.addAll(map2.keySet());
Map<Integer,Type3> output =
allKeys.stream()
.collect(Collectors.toMap(Function.identity(),
key -> new Type3(map1.get(key),map2.get(key))));

关于java - 将两张不同类型的 map 合并为一张 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59452924/

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