Lev*_*van 1 java string return java-stream
我有一个课程Person,它存储每个人的代码和朋友列表.我正在尝试获取拥有最多朋友数量的人的代码,但无法弄明白.这些方法getFriends和getCode由提供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)
而不是排序,使用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().