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
我想将上面的哈希图转换为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());
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句