假设我有一套,我想过滤到每所学校最老的。
到目前为止,我已经:
Map<String, Long> getOldestPerSchool(Set<Person> persons) {
return persons.stream().collect(Collectors.toMap(Person::getSchoolname, Person::getAge, Long::max);
}
问题是,我想要的是整个人,而不仅仅是名字。但如果我把它改成:
Map<Person, Long> getOldestPerSchool(Set<Person> persons) {
return persons.stream().collect(Collectors.toMap(p -> p, Person::getAge, Long::max);
}
我得到所有的人,我不一定需要一张Map。
2条答案
按热度按时间epggiuax1#
设置,我想过滤到每个学校最老的。
假设每所学校的“最年长”意味着“最年长”
Person
每school
,您可能正在查找如下输出:gblwokeq2#
您可以通过中间分组来实现这一点,然后只在
values()
在生成的分组列表中,您只需选择最年长的人