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 循環,102 到計算機與沒有相同根本。
https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html
添加回答
舉報
