Java 将对象列表与其他对象一起排序';s法
在下面的代码中,对于这样的类,如何根据从课程列表中获得的分数对学生数组列表进行排序?我的意思是,如何根据这个类的属性对一个特定类的列表进行排序,这个类是另一个类的子类Java 将对象列表与其他对象一起排序';s法,java,list,sorting,stream,Java,List,Sorting,Stream,在下面的代码中,对于这样的类,如何根据从课程列表中获得的分数对学生数组列表进行排序?我的意思是,如何根据这个类的属性对一个特定类的列表进行排序,这个类是另一个类的子类 public class Student{ public ArrayList<Student> students = new ArrayList<Student>(); public ArrayList<Course> studentCourses = new ArrayLi
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;
}
//...
}
公共班级学生{
public ArrayList students=new ArrayList();
public ArrayList studentCourses=新建ArrayList();
//...
班级课程{
双倍得分;
公众双倍得分(){
返回此.score;
}
//...
}
你的“学生”类很容易混淆。根据名称,这个类听起来似乎应该代表一个学生。但是在它里面有一个列表
,这意味着每个学生
对象将包含指向零个或多个其他学生
对象的指针。这个关系代表什么?学生为什么引用num其他学生怎么样
你的“课程”课程也令人困惑,因为它只包含一个分数。如果我定义了一门大学课程,那么我会想象它将代表学校/学院/大学某一年的课程,它需要包含以下信息才能完成:
- 课程名称
- 课程开始的年份
- 注册参加本课程的一组学生
- 课程中涉及的测试/考试/评估
- 每个学生在课程中取得的总分或成绩
Map
(如果您的分数只是数值,您可以使用Map
)但是请注意,如果使用Student
对象作为Map
键,则需要覆盖“Student”类中的equals
和hashcode
方法,以便它们能正确工作。区分人(可能有相同姓名、出生日期等)的最佳方法就是在每个学生注册时给他们分配一个序列号。所以你的“学生”类可以简单地包含一个ID序列号为的long
字段,然后你的equals
和hashcode
方法只需检查并使用这个唯一值
或者,您可能更愿意在“学生”类中添加地图,map
,以便每个学生跟踪其课程分数。您选择的内容将取决于您的应用程序访问分数的最频繁方式(获取每个学生的课程分数或每个课程的学生分数,或两者兼而有之)
但总的来说,你创建的每个类都需要表示一件事,你需要准确地决定什么。然后你需要决定每个类需要哪些字段才能完全表示那件事。你的“学生”类很容易混淆。根据名称,这个类听起来似乎应该代表一个学生。但是在它里面有一个列表
,这意味着每个学生
对象将包含指向零个或多个其他学生
对象的指针。这个关系代表什么?学生为什么引用num其他学生怎么样
你的“课程”课程也令人困惑,因为它只包含一个分数。如果我定义了一门大学课程,那么我会想象它将代表学校/学院/大学某一年的课程,它需要包含以下信息才能完成:
- 课程名称
- 课程开始的年份
- 注册参加本课程的一组学生
- 课程中涉及的测试/考试/评估
- 每个学生在课程中取得的总分或成绩
Map
(如果您的分数只是数值,您可以使用Map
)但是请注意,如果使用Student
对象作为Map
键,则需要覆盖“Student”类中的equals
和hashcode
方法,以便它们能正确工作。区分人(可能有相同姓名、出生日期等)的最佳方法就是在每个学生注册时给他们分配一个序列号。所以你的“学生”类可以简单地包含一个ID序列号为的long
字段,然后你的equals
和hashcode
方法只需检查并使用这个唯一值
或者,您可能更愿意在“学生”类中添加地图,map
,以便每个学生跟踪其课程分数。您选择的内容将取决于您的应用程序访问分数的最频繁方式(获取每个学生的课程分数或每个课程的学生分数,或两者兼而有之)
但总体信息是,您创建的每个类都需要表示一件事,您需要准确地确定什么。然后您需要确定每个类需要哪些字段才能完全表示该事。是的,您的问题没有显示您尝试了什么以及问题所在。
列表为什么在Studen中t课?谢谢你的关注,如果你能来,我真的很高兴