2 回答
TA贡献1821条经验 获得超6个赞
一个Course对象有一个对象列表Prerequisite,其中只有一个需要满足。一个Prerequisite对象有需要的清单Course对象,所有这些都需要被传递的Prerequisite被对象实现。
public class Course {
private List<Prerequisite> prerequisites;
public boolean canBeTakenBy(Student student) {
return prerequisites.isEmpty() ||
prerequisites.stream().anyMatch(p -> p.isFulfilledBy(student));
}
}
public class Prerequisite {
private List<Course> requiredCourses;
public boolean isFulfilledBy(Student student) {
return requiredCourses.stream().allMatch(student::hasPassed);
}
}
public class Student {
private Set<Course> passedCourses;
public boolean hasPassed(Course course) {
return passedCourses.contains(course);
}
}
TA贡献1862条经验 获得超7个赞
有很多方法可以完成你想要的,我个人认为最简单的就是拥有一个 ArrayList< ArrayList < Course > >
因此,例如,如果您想添加一个可能的要求选项,您可以ArrayList使用课程创建一个并将其推送到要求的末尾。
稍后检查它,只需运行组合,复杂性应该不是问题,例如,如果您有 10 个可能的要求,每个要求 10 个课程,最坏的情况是 10x10 循环,10² 到计算机与没有相同根本。
https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html
添加回答
举报
