3 回答

TA貢獻1811條經驗 獲得超5個贊
根據依賴于 的大小的比較器計算Person包含的最大值:PeoplePerson.getFriends()
Optional<Person> p = people.getPeople()
.stream()
.max(Comparator.comparingInt(p -> p.getFriends()
.size()));
請注意,您還可以僅檢索不與 Person 關聯的朋友的最大數量:
OptionalInt maxFriends = people.getPeople()
.stream()
.mapToInt(p -> p.getFriends()
.size())
.max();

TA貢獻1876條經驗 獲得超7個贊
您可以在Person類中聲明以下方法:
public int getNumberOfFriends(){
return friends.size();
}
然后在這樣的流中使用它:
Optional <Person> personWithMostFriends = people.stream().max(Comparator.comparingInt(Person::getNumberOfFriends));
通過這種方法,您將獲得Person最多朋友的對象,而不僅僅是某人建議的最大朋友數。

TA貢獻1993條經驗 獲得超6個贊
你的問題已經回答了。但我添加這個是為了一件事。如果您的人員列表很大,并且您有多核電腦并且您想有效地使用它,那么請使用parallelstream()。
得到人:
Person person = people.getPeople()
.parallelStream()
.max(Comparator.comparingInt(p-> p.getFriends().size()))
.orElse(null);
獲取尺寸:
int size = people.getPeople()
.parallelStream()
.mapToInt(p -> p.getFriends().size())
.max().orElse(0);
添加回答
舉報