我在做作业的时候遇到了一个小问题。如何在子类中实现Comparable接口时如何使用Collections.sort()?
我有一个Person类
public class Person {
protected String code;
protected String name;
}
和被称为学生
public class Student extends Person implements Comparable<Student>{
private double grade;
@Override
public int compareTo(Student that){
return Double.compare(grade, that.grade);
}
}
子老师要我们去创造一个教授级利用管理学生的ArrayList
public class Professor {
private List<Person> arr;
public Professor() {
arr = new ArrayList();
}
}
后将约10名学生添加到ArrayList中,并要求我们对该列表进行排序。问题是,据我所知,我不能使用Collections.sort(arr),因为我声明了List < Person>,而不是List < Student>。
我误解了什么吗?有没有办法在这种情况下使用Collections.sort(),或者我必须编写一个方法来手动排序呢?
他要求我们实现在类学生Comparable接口,还要求我们创建列表<人>而不是List <学生>
编辑:非常感谢你。赞赏所有的答复和评论。上述问题的解决方法是垂头丧气名单<人>列出<学生>
名单如果你计划给学生排序对于学生来说特别适合,比较者肯定属于那个班级。 –
你的班级'Person'很可能是一个* abstract *班级。然后你可以声明'Person'来实现'Comparable',但是要在'Person'的子类中实现'Comparable'的实际代码只有 –
@Timothy Truckle我同意你的意见。有了这些要求,这似乎是最合乎逻辑的方法。 – davidxxx