import java.util.*; class School { private final Map> database = new HashMap<>(); int numberOfStudents() { int result = 0; for (List studentsInGrade : database.values()) { result += studentsInGrade.size(); } return result; } void add(String student, int grade) { List students = fetchGradeFromDatabase(grade); students.add(student); } List grade(int grade) { return new ArrayList<>(fetchGradeFromDatabase(grade)); } List fetchGradeFromDatabase(int grade) { if (!database.containsKey(grade)) { database.put(grade, new LinkedList<>()); } return database.get(grade); } 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; } }