【问题标题】:Return String from Java stream从 Java 流返回字符串
【发布时间】:2016-10-27 17:01:00
【问题描述】:

我有一个类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());
}

【问题讨论】:

  • 不管你想对 Stream 做什么,只要你忘记了forEach 的存在,就会出现解决方案……

标签: java string return java-stream


【解决方案1】:

使用max()代替排序。

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

查看Optional 类,看看是否有其他getter 可以满足您的需求,例如orElseThrow()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    相关资源
    最近更新 更多