3 回答
TA贡献1811条经验 获得超5个赞
根据依赖于 的大小的比较器计算Person包含的最大值:PeoplePerson.getFriends()
Optional<Person> p = people.getPeople()
.stream()
.max(Comparator.comparingInt(p -> p.getFriends()
.size()));
请注意,您还可以仅检索不与 Person 关联的朋友的最大数量:
OptionalInt maxFriends = people.getPeople()
.stream()
.mapToInt(p -> p.getFriends()
.size())
.max();
TA贡献1876条经验 获得超7个赞
您可以在Person类中声明以下方法:
public int getNumberOfFriends(){
return friends.size();
}
然后在这样的流中使用它:
Optional <Person> personWithMostFriends = people.stream().max(Comparator.comparingInt(Person::getNumberOfFriends));
通过这种方法,您将获得Person最多朋友的对象,而不仅仅是某人建议的最大朋友数。
TA贡献1993条经验 获得超5个赞
你的问题已经回答了。但我添加这个是为了一件事。如果您的人员列表很大,并且您有多核电脑并且您想有效地使用它,那么请使用parallelstream()。
得到人:
Person person = people.getPeople()
.parallelStream()
.max(Comparator.comparingInt(p-> p.getFriends().size()))
.orElse(null);
获取尺寸:
int size = people.getPeople()
.parallelStream()
.mapToInt(p -> p.getFriends().size())
.max().orElse(0);
添加回答
举报