下面是一个使用Java语言实现示例代码和对应的注解,望采纳:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class WorldCupGroup implements Group {
private final String groupName;
private final List<Team> teams;
public WorldCupGroup(String groupName, Team a, Team b, Team c, Team d) {
this.groupName = groupName;
this.teams = new ArrayList<>();
this.teams.add(a);
this.teams.add(b);
this.teams.add(c);
this.teams.add(d);
// 按照分数、净胜球数、名称顺序排序
Collections.sort(teams, (team1, team2) -> {
if (team1.getPoints() != team2.getPoints()) {
return team2.getPoints() - team1.getPoints();
} else if (team1.getGoalDifference() != team2.getGoalDifference()) {
return team2.getGoalDifference() - team1.getGoalDifference();
} else {
return team1.getName().compareTo(team2.getName());
}
});
}
@Override
public Team getWinner() {
return teams.get(0);
}
@Override
public Team getRunnerUp() {
return teams.get(1);
}
@Override
public String getTable() {
StringBuilder table = new StringBuilder();
// 添加组名
table.append(groupName + "\n");
// 添加列标题
table.append("Team W D L F A P\n");
// 添加每个团队的信息
for (Team team : teams) {
table.append(team.getName() + " " + team.getWins() + " " + team.getDraws() + " " + team.getLoses() + " "
+ team.getGoalsFor() + " " + team.getGoalsAgainst() + " " + team.getPoints() + "\n");
}
return table.toString();
}
}
代码中构造函数在创建WorldCupGroup对象时使用传入的团队参数构建了一个团队列表,并使用Java的Collections.sort方法将列表按照上述规则进行排序。
在getWinner和getRunnerUp方法中,分别返回了排序后的团队列表中的第一个和第二个团队。
getTable方法则构建并返回了包含组内当前表格的字符串。在构建表格时,它会首先添加组名,然后添加列标题,最后添加每个团队的信息。