java - 如何将 Guava HashMultmap 转换为 java.util.Map

标签 java hashmap guava

我正在尝试转换 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);

错误截图如下: enter image description here

有人可以指出我哪里做错了吗?

最佳答案

返回类型 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/

相关文章:

java - 收集流时如何使用Guava的Multisets.toMultiSet()?

java - 更新调度程序上的 Activity 集合

java - java 中的数组(前两个值是字符串,最后一个值是 int )

java - 分布式缓存

php - PHP 中 Java HashMap 替代品的建议?

java - 如果花费太多时间,如何取消 AsyncRestTemplate HTTP 请求?

java - 如何访问此 Json 中的以下属性 - JAVA

java - 将值从数组转换为 findViewById id

java - 值未从 put() 插入到 HashMap 中

Java - 映射键查找忽略大小写