这是问题所在:我有一个名为Student
的类。在Student
中,我有一个ArrayList<Student>
字段,名称为students
。我也有一个班级名称Course
。代码是这样的:
public class Student{
public ArrayList<Student> students = new ArrayList<Student>();
public ArrayList<Course> studentCourses = new ArrayList<Course>();
//...
class Course{
double score;
public double getScore(){
return this.score;
}
//...
}
我有一个Student
对象调用allStudents
,其中包含我所有的学生,其格式为Student
。
我想按特定课程的分数对这些学生进行排序。怎么可能呢?如果缺少任何信息,请随时发表评论。我将更新这个问题。
任何帮助都会得到高度重视
答案 0 :(得分:1)
您的“学生”类令人困惑。根据名称,听起来这堂课应该代表一个学生。但随后您将在其中包含一个List<Student>
,这意味着每个Student
对象将包含指向零个或多个其他Student
对象的指针。这种关系代表什么?为什么一个学生引用其他许多学生?
您的“课程”课程也令人困惑,因为它仅包含一个分数。如果我要定义一门大学课程,那么我想它会代表特定年份的学校/学院/大学中的一门课程,并且它需要包含以下信息才能完整:
如果这是一项家庭作业,并且保持简单,那么您可能会忽略单个测试/考试/评估以及开学年。但是您仍然需要确定一种将总分映射到每个学生的方法。
假设您创建一个代表单个学生的“学生”类(并将学生数据库类重命名为“学生”),则只需在“课程”类中创建一个Map<Student, Score>
。 (如果分数只是数字值,则可以使用Map<Student, Integer>
。)但是请注意,如果将Student
对象用作Map
键,则需要覆盖equals
和您的“学生”类中的hashcode
方法,以便它们正常工作。区分人(姓名,生日等)的最好方法是在每个人注册时给他们分配一个序列号。因此,您的“学生”类可以只包含一个ID序列号为long
的字段,然后您的equals
和hashcode
方法将简单地检查并使用这个唯一值。
或者,您可能希望在“学生”课程Map<Course, Score>
中添加地图,以便每个学生都可以跟踪其课程成绩。选择什么取决于您的应用程序最常访问分数(获取每个学生的课程分数或获取每个课程的学生分数,或同时获取这两者)。
但是总的信息是,您创建的每个类都需要代表一件事,并且您需要精确地决定什么。然后,您需要确定每个类需要哪些字段才能完全表示该东西。