Okej, dzięki, już sobie poradziłem :D
//edit
Jednak nie do końca, albo nie do końca rozumiem jak ma działać to students.byGrade() i to drugie. Ja to zrozumiałem tak, że ta pętla ma przeiterować po posortowanej po ocenach kolekcji. Ale w tym problem, że nie użyłem w metodzie byGrade() takiego iteratora. Tu macie kod:
public class Students extends ArrayList<Student> {
public List<Student> copyList(){
List<Student> copy=new ArrayList<>();
for(Student t : this){
copy.add(new Student(t.getFirstName(),t.getLastName(),t.getGrade1(),t.getGrade2(),t.getGrade3()));
}
return copy;
}
public Iterable<Student> byLastName(){
List<Student> copy=copyList();
Collections.sort(copy,new Student.CompareLastName());
return copy;
}
public Iterable<Student> byGrade(){
List<Student> copy=copyList();
Collections.sort(copy,new Student.CompareGrades());
return copy;
}
}