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