package Body; import java.util.ArrayList; import java.util.List; public class Statistics { private static final int RETIREMENT_AGE = 70; private double averageAge; private double averageAgeOfRetiredEmployees; private List retiredEmployees; private List retirementAgedButEmployed; public Statistics(List employees) { retiredEmployees = filterRetiredEmployees(employees); retirementAgedButEmployed = filterStillWorkingEmployees(employees); averageAge = average(employees); averageAgeOfRetiredEmployees = average(retiredEmployees); } private List filterStillWorkingEmployees(List employees) { List workingEmployees = new ArrayList(); for (Employee employee : employees) { if (isRetiredAndWorking(employee)) { workingEmployees.add(employee); } } return workingEmployees; } private boolean isRetiredAndWorking(Employee employee) { return employee.getAge() >= RETIREMENT_AGE && !employee.isRetired(); } private List filterRetiredEmployees(List employees) { List retiredEmployees = new ArrayList(); for (Employee employee : employees) { if (employee.isRetired()) { retiredEmployees.add(employee); } } return retiredEmployees; } public double average(List employees) { double average = 0; for (Employee employee : employees) { average += employee.getAge(); } return average / employees.size(); } public double getAverageAge() { return averageAge; } public List getRetiredEmployees() { return retiredEmployees; } public List getRetirementAgedButEmployed() { return retirementAgedButEmployed; } public double getAverageAgeOfRetiredEmployees() { return averageAgeOfRetiredEmployees; } }