从Java流返回字符串

时间:2016-06-25 01:39:43

标签: java string return java-stream

我有一个班级Person,它存储每个人的代码和朋友列表。我试图获取拥有最多朋友数量的人的代码,但无法弄明白。方法getFriendsgetCodePerson类提供。

如何从流中返回字符串?

HashMap<String,Person> persons = new HashMap<>();

public String personWithLargestNumberOfFriends() {
    return persons.values().stream()
        .sorted(comparing(p -> ((Person)p).getFriends().size()).reversed())
        .limit(1)
        .forEach(p -> ((Person)p).getCode());
}

1 个答案:

答案 0 :(得分:6)

不使用排序,而是使用max()

return persons.values().stream()
    .max(comparing(Person::getFriends, comparingInt(List::size)))
    .map(Person::getCode)
    .orElse("empty code");

请参阅Optional课程,了解其他一些吸气剂是否符合您的需求,例如orElseThrow()