Java 8 流分组依据

标签 java lambda java-8

我有List<Map<String, String>>列表中的每个项目都是一张 map ,例如

companyName - IBM
firstName - James
country - USA
...

我想创建一个 Map<String, List<String>>将 companyName 映射到 firstName 列表的位置 例如

IBM -> James, Mark
ATT -> Henry, Robert..


private Map<String,List<String>> groupByCompanyName(List<Map<String, String>> list) {
    return list.stream().collect(Collectors.groupingBy(item->item.get("companyName")));
}

但这将创建 Map<String, List<Map<String, String>> (将 comanyName 映射到 map 列表)

如何创建 Map<String, List<String>>

最佳答案

还没有测试过,但是像这样的东西应该可以工作:

Map<String, List<String>> namesByCompany
    = list.stream()
          .collect(Collectors.groupingBy(item->item.get("companyName"),
                   Collectors.mapping(item->item.get("firstName"), Collectors.toList())));

关于Java 8 流分组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27969584/

相关文章:

java - 在列表中找到最高和最低值,现在需要找到它们的位置(java)

lambda - Kotlin lambda 和类型推断

c# - 创建新的和删除和插入模式

java - 如何在不同的 lambda 表达式中使用 lambda 表达式中的对象

java - 在列表中查找最大和最小 double 值

java - 我可以在不请求该 JVM 的情况下从另一个 JVM 的内存访问对象吗?

java - 将日历转换为 java.util.Date 时出现问题

java - ActionEvent 库(JDK 8)无法识别 IntelliJ setOnAction

java - 使用 java 流从列表创建 map 列表

Java 服务包装器和附加的应用程序命令行参数