【问题标题】:Is there a way to get the object with max points有没有办法获得最大点的对象
【发布时间】:2019-10-07 14:30:00
【问题描述】:
如果我创建了一个名为 Team 的类并且我有一个名为 point(int) 的属性并且我创建了 10 个 Teams,那么它们都有一些分数。我想在我的类中定义一个函数,该函数返回具有最高分的团队。你有什么建议吗?我可以通过定义一个外部函数来做到这一点,但我想以不同的方式做到这一点。我可以通过在我的类中定义一个静态函数或在我的类中的函数中使用 stream() 来做到这一点吗?
感谢您的帮助,我很抱歉我的英语和广泛的问题
public class Team {
int point;
}
【问题讨论】:
标签:
java
class
inheritance
static
【解决方案1】:
如果我理解正确,那么你可以简单地创建一个 for 循环。
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;
}
希望对你有帮助
【解决方案2】:
也许您可以创建一个静态地图变量,并且每次调用构造函数时,添加一个团队对象作为键和点作为值。也就是说,如果一个团队在创建时有积分。然后创建一个静态函数来检查地图的最大值并返回团队。
(更正你可以只使用一个 ArrayList,因为每个团队已经有一个点场)
【解决方案3】:
只需在你的类中创建一个像这样的静态方法:
public static Optional<Team> winner(Collection<Team> teams) {
return teams.stream()
.max(Comparator.comparingInt(team -> team.point));
}
如果您希望在 Collection 团队为空的情况下返回 Optional、null 或抛出 Exception,请调整它。