@Data
class Person {
private String fname;
private String lname;
private List<String> friends;
private List<BigDecimal> ratings;
...
}
@Data
class People {
private List<Person> people;
...
}
Run Code Online (Sandbox Code Playgroud)
假设我有上述课程,并且需要弄清楚任何一个人拥有的朋友数量是多少.我知道前流的方式...通过循环遍历列表中的每个元素并检查friends.size()是否大于当前存储的最长列表的数量.有没有办法简化流的代码?像这样的回答?
根据依赖于以下大小的比较器计算Person包含的最大值:PeoplePerson.getFriends()
Optional<Person> p = people.getPeople()
.stream()
.max(Comparator.comparingInt(p -> p.getFriends()
.size()));
Run Code Online (Sandbox Code Playgroud)
请注意,您还可以仅检索没有与之关联的人员的最多朋友:
OptionalInt maxFriends = people.getPeople()
.stream()
.mapToInt(p -> p.getFriends()
.size())
.max();
Run Code Online (Sandbox Code Playgroud)