java - 使用 Lambda 将 List<Person> 转换为 Map<Integer, List<Integer>>

标签 java lambda java-8 java-stream

我想将列表转换为 map ,如下所示。这是示例。

我让学生列出类似下面的代码片段的内容。从中获取一个 Hasmap,其中 Key 为 Integer,即 Age,value 为 List。

从下面的输入源中,我的回复应该如下所示。我该如何实现这一目标?

map [[10, {1}], [20, {2,3,4}], [30,{5}]。 [40,{6}]];

private static List<Person> getPersonTestData() {
    List<Person> personList = new ArrayList<>();
    personList.add(Person.of(1, "First1", "Last1", 10));
    personList.add(Person.of(2, "First2", "Last2", 20));
    personList.add(Person.of(3, "First3", "Last3", 20));
    personList.add(Person.of(4, "First4", "Last4", 20));
    personList.add(Person.of(5, "First5", "Last5", 30));
    personList.add(Person.of(6, "First6", "Last6", 40));

    return personList;
}

提前致谢......!

最佳答案

您可以在下游使用 groupingBymapping 来完成此操作,如下所示:

Map<Integer, List<Integer>> ageToIdsMap = getPersonTestData().stream()
        .collect(Collectors.groupingBy(Person::getAge,
                Collectors.mapping(Person::getId, Collectors.toList())));

关于java - 使用 Lambda 将 List<Person> 转换为 Map<Integer, List<Integer>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54872793/

相关文章:

java - 在 Java 中使用 lambda 表达式进行嵌套 for 循环

java - java 8 中的编译代码与 java 11 中的编译代码

java - 单击项目后,如何从 RecyclerView 的适配器内的 drawable 更改 imageView 的图像?

java - .Net 与 Java 工作

java - DB2 日期的 SQL 错误代码 -245

java - 检测扫描仪是否没有下一个

c# - 表达式重载作为参数

c++ - 可变/不可变 lambda 的编译时开关

java - 使用 lambda 和流映射列表对象

java 流 : elegant way to filter according an exception is thrown