我需要建立一个能够处理他们已注册的学生和课程数据的小程序。 功能并不复杂,我希望能够获得课程的平均值和中位数,学生的平均值以及类似的东西。
所以我已经阅读了很多关于hibernate和数据库的内容,但我对此没有任何经验(为了记录,我显然不介意在网上打开十亿个网络中的一个并且自己学习,我只需要计划在本周末完成。)
所以我想知道是否有任何有效的方法只使用java类构建这样的程序? 我的意思是,如何在没有数据库的情况下以智能方式处理多对多关系?
答案 0 :(得分:0)
您需要的解决方案在很大程度上取决于您的多对多映射是单向还是双向映射。
如果是单向的(只需要查找学生注册的课程,而不是学生注册课程的内容):
Map<Student, List<Course>> mapping = new HashMap<Student, Course>();
public void enrollStudent(Student student, Course course){
if(mapping.containsKey(student)){
mapping.put(student, mapping.get(student).add(course));
} else {
mapping.put(student, new ArrayList<Course>().add(course));
}
}
public List<Course> getStudentsCourses(Student student){
return mapping.get(student);
}
但是,如果要求它是双向的,则需要包含一个双向映射来代替上面的散列映射(然后创建相应的反向函数)。请查看Google's BiMap或Apache's BidiMap