我正在尝试转换 Guava Multimap<String ,Collection<String>>
进入Map<String, Collection<String>>
但使用 Multimaps.asMap(multimap)
时出现语法错误。这是一个代码:
HashMultimap<String, Collection<String>> multimap = HashMultimap.create();
for (UserDTO dto : employees) {
if (dto.getDepartmentNames() != null) {
multimap.put(dto.getUserName().toString().trim(), dto.getDepartmentNames());
}
}
Map<String, Collection<String>> mapOfSets = Multimaps.asMap(multimap);
有人可以指出我哪里做错了吗?
最佳答案
返回类型 Multimaps.asMap(multimap)
是 Map<String, <Set<Collection<String>>
.
Multimap 可以保存同一键的多个值。因此,当您想要从多重映射转换为 map 时,您需要保留每个键的值集合,以防万一,有一个键在 map 中出现两次。
如果您想从 MultiMap
转换至Map
并对值进行设置总和,您可以执行以下操作:
Multimaps.asMap(multimap).entrySet().stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
e->e.getValue().stream()
.flatMap(Collection::stream).collect(toSet())));
关于java - 如何将 Guava HashMultmap 转换为 java.util.Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45326357/