从Java流返回字符串

Lev*_*van 1 java string return java-stream

我有一个课程Person,它存储每个人的代码和朋友列表.我正在尝试获取拥有最多朋友数量的人的代码,但无法弄明白.这些方法getFriendsgetCode由提供Person类.

如何从流中返回字符串?

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());
}
Run Code Online (Sandbox Code Playgroud)

4ca*_*tle 6

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

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

Optional课程,看看其他一些吸气剂是否适合你的需求,比如orElseThrow().