【发布时间】:2017-12-05 21:23:27
【问题描述】:
我在做作业时遇到了一个小问题。
我有一个 Person 类
public class Person {
protected String code;
protected String name;
}
还有一个叫做 Student 的子类
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();
}
}
将大约十名学生添加到 ArrayList 后,我们被要求对该列表进行排序。问题是,据我所知,我不能使用 Collections.sort(arr),因为我声明它是 List,而不是 List。
我是不是误会了什么?在这种情况下有什么方法可以使用 Collections.sort() 还是我必须编写一个方法来手动对其进行排序?
并且他要求我们在Student类中实现Comparable接口,还要求我们创建List
编辑:非常感谢。感谢所有的答案和评论。 DOWNCAST List 到 List
已解决上述问题【问题讨论】:
-
如果您打算以学生特有的方式对学生进行排序,那么比较器肯定属于该类。
-
您的课程
Person很可能是一个abstract 课程。然后你可以声明Person来实现Comparable,但实际代码只在Person的子类中实现Comparable -
@Timothy Truckle 我同意你的看法。有了这些要求,这似乎是最合乎逻辑的方式。
-
这样想吧:如果你的
List<Person>中有一个Teacher,你会如何根据列表中的Students 对其进行排序?