如果我创建了一个名为Team的类,并且我有一个名为point(int)的属性,并且我创建了10个Teams,那么它们全部都有一些积分。我想在我的类中定义一个函数,该函数返回具有最高分的团队。你有什么建议吗?我可以通过定义一个外部函数来做到这一点,但我想做不同的事情。我可以通过在类中定义静态函数或在类中的函数内使用stream()来做到这一点吗?
感谢您的帮助,对于我的英语和广泛的问题,我感到抱歉
public class Team {
int point;
}
答案 0 :(得分:0)
如果我对您的理解正确,那么您可以简单地进行循环。
public static void GetTeamWithMaxPoints(ArrayList<Team> teams) {
Team team = null;
for(Team t : teams) {
if(team == null || team.getPoint() < t.getPoint()) {
team = t;
}
}
return team;
}
我希望这对您有帮助
答案 1 :(得分:0)
也许您可以创建一个静态映射变量,并且每次调用构造函数时,都添加一个team对象作为键,并以points作为值。也就是说,如果团队在创建时有积分。然后创建一个静态函数,该函数检查地图的最大值并返回团队。 (正确的是,您只能使用ArrayList,因为每个团队都已经有一个得分字段)
答案 2 :(得分:0)
只需像这样在类中创建一个静态方法:
public static Optional<Team> winner(Collection<Team> teams) {
return teams.stream()
.max(Comparator.comparingInt(team -> team.point));
}
如果您希望返回Optional,null或抛出异常(如果Collection团队为空的话),请进行调整。