gpt4 book ai didi

java - 在java中合并相似的HashMaps

转载 作者:搜寻专家 更新时间:2023-11-01 02:39:03 25 4
gpt4 key购买 nike

HashMap<String, String> hashMap1 :

       name : ranjith
city : san jose

HashMap<String, String> hashMap2 :

       name : sandeep
city : san jose

HashMap<String, String> hashMap3 :

       name : rohith
city : san jose

我想把上面的 hashmaps 转换成 HashMap<String, List<String>> hashMap4 :

      name : [ranjith, sandeep, rohith]
city : [san jose]

要进行这种合并,有什么直接的方法,还是应该迭代每个元素,找到相似之处,然后合并

最佳答案

这将收集到 Map<String, Set<String>> ,这似乎比列表更合适,因为您正在收集唯一值。它使用 java.util.stream.Collectors.* 的静态导入.

Map<String, Set<String>> hashMap4 = Stream.of(hashMap1, hashMap2, hashMap3)
.map(Map::entrySet)
.flatMap(Set::stream)
.collect(groupingBy(Map.Entry::getKey, mapping(Map.Entry::getValue, toSet())));

这是 Java 7 版本。没有那么简洁明了,但仍然不太复杂。

Map<String, Set<String>> hashMap4 = new HashMap<>();
for (Map<String, String> map : Arrays.asList(hashMap1, hashMap2, hashMap3)) {
for (Map.Entry<String, String> entry : map.entrySet()) {
String key = entry.getKey();
Set<String> values = hashMap4.get(key);
if (values == null) {
hashMap4.put(key, values = new HashSet<>());
}
values.add(entry.getValue());
}
}

关于java - 在java中合并相似的HashMaps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38778866/

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