有没有一种方法可以使物体获得最高分

时间:2019-10-07 14:30:00

标签: java class inheritance static

如果我创建了一个名为Team的类,并且我有一个名为point(int)的属性,并且我创建了10个Teams,那么它们全部都有一些积分。我想在我的类中定义一个函数,该函数返回具有最高分的团队。你有什么建议吗?我可以通过定义一个外部函数来做到这一点,但我想做不同的事情。我可以通过在类中定义静态函数或在类中的函数内使用stream()来做到这一点吗?

感谢您的帮助,对于我的英语和广泛的问题,我感到抱歉

public class Team {
    int point;
}

3 个答案:

答案 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团队为空的话),请进行调整。