import java.util.Comparator; import java.util.*; import java.io.*; class Student { String firstName; String lastName; int AEM; public Student(int AEM, String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; this.AEM = AEM; } public String toString() { return String.format("%5d. %s, %s", AEM, lastName, firstName); } // First anonymous comparator class static Comparator lexicographicCmp = new Comparator() { public int compare(Student st1, Student st2) { int cmp = st1.lastName.compareTo(st2.lastName); if(cmp==0) cmp = st1.firstName.compareTo(st2.firstName); if(cmp==0) cmp = st1.AEM - st2.AEM; return cmp; } }; public static void sortLexicographically(List students) { Collections.sort(students, Student.lexicographicCmp); } public static void sortByAEM(List students) { // Second anonymous comparator class Collections.sort(students, new Comparator() { public int compare(Student st1, Student st2) { int cmp = st1.AEM - st2.AEM; if(cmp==0) cmp = st1.lastName.compareTo(st2.lastName); if(cmp==0) cmp = st1.firstName.compareTo(st2.firstName); return cmp; } } ); } }