使用Lambdas将List <person>转换为Map <integer,list <integer =“” >>

时间:2019-02-25 18:45:28

标签: java lambda java-8 java-stream

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

我有一个学生列表,类似于下面的代码片段。使用Key作为Integer来获取Hasmap,它的Age和Value作为List。

在下面的输入提要中,我的答复应类似于以下内容。我该如何实现?

地图[[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;
}

在此先感谢.......!

1 个答案:

答案 0 :(得分:2)

您可以在下游使用groupingBymapping来做到这一点:

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