import java.util.*; public class School { private final Map> database = new HashMap<>(); public int numberOfStudents() { int result = 0; for (List studentsInGrade: database.values()) { result += studentsInGrade.size(); } return result; } public void add(String student, int grade) { List students = fetchGradeFromDatabase(grade); students.add(student); } public List grade(int grade) { return new ArrayList<>(fetchGradeFromDatabase(grade)); } private List fetchGradeFromDatabase(int grade) { if (!database.containsKey(grade)) { database.put(grade, new LinkedList<>()); } return database.get(grade); } public Map> studentsByGradeAlphabetical() { Map> sortedStudents = new HashMap<>(); for (Integer grade : database.keySet()) { List studentsInGrade = database.get(grade); Collections.sort(studentsInGrade); sortedStudents.put(grade, studentsInGrade); } return sortedStudents; } }