package design.model.statistics; import java.util.Arrays; import java.util.List; import java.util.Map; import design.model.League; import design.model.Match; import design.model.Round; public class LeagueStats implements Statistics{ private final League league; public LeagueStats(League league) { this.league = league; } public List getMatchesPlayed() { return league.getCompletedMatches(); } public Map getScores() { return league.getResults(); } public List> getStandings(){ return league.getResults().entrySet().stream().sorted(Map.Entry.comparingByValue()).>map(e -> e).toList(); } public List getWinners(){ List> standings = getStandings(); int bestScore = standings.get(0).getValue(); return standings.stream().filter(entry -> entry.getValue() == bestScore).map(Map.Entry::getKey).toList(); } @Override public Round[] getRounds(){ return league.getCompletedMatches().stream().flatMap(match -> Arrays.stream(match.getRounds())).toArray(Round[]::new); } @Override public int get_score(){ return Arrays.stream(getRounds()).mapToInt(Round::getTotalSwings).sum(); } @Override public double get_distance(){ return Arrays.stream(getRounds()).mapToDouble(Round::getTotalDistance).sum(); } }