创建一个包含有关对象集合的信息的地图

时间:2018-05-15 14:57:17

标签: java lambda collections java-stream

我有一个“学校”的集合;该类提供方法“getDescription”(String)。 我需要创建一个Map <String, Long>,其中包含每个描述使用流的具有该描述的学校的数量。 我做了以下事情:

Stream<School> school = getSchools().stream();  // getSchools returns the colletion

Map<String, Long> m = school.collect(toMap(School::getDescription, 
        groupingBy(School::getDescription, counting())));

但它不起作用......任何提示?

1 个答案:

答案 0 :(得分:2)

你走在正确的轨道上。试试这个:

Map<String, Long> m = 
     school.collect(groupingBy(School::getDescription, counting()));

您的原始代码:

school.collect(toMap(School::getDescription,   //
    groupingBy(School::getDescription, counting())));

会导致编译错误,因为toMap()将第二个参数作为值映射器函数