0
private ArrayList<String> professor = new ArrayList();
private ArrayList<String> course = new ArrayList();
private ArrayList<String> courseGroup = new ArrayList()

教授数组列表可能包含:

["John","Dick","Harry"]

我想将“John”链接到他可能正在教授的课程的 ArrayList,然后将课程链接到 courseGroup 的 ArrayList,因为一门课程可能有多个课程。所以这就像约翰教授教授的课程和他被分配到的课程组的记录。

4

3 回答 3

2

你需要一个类设计来完成这项工作。例如

class Person {
    private String name;
    //getters and setters...
}

class Course {
    private String name;
    private Professor professor;
    private List<Person> students;
    //getters and setters...
}

class CourseGroup {
    private List<Course> courses;
    //getters and setters...
}

这可能是您的计划的开始。如何链接程序中的元素取决于您。这是一个示例:

public class School {

    public static void main(String[] args) {
        Person professor = new Professor();
        professor.setName("Harry");
        Course course = new Course();
        course.setName("Dick");
        course.setProfessor(professor);
        Person p = new Person();
        p.setName("Harry");
        course.setStudents(new ArrayList<Person>());
        course.getStudents().add(p);
        CourseGroup courseGroup = new CourseGroup();
        courseGroup.setCourses(new ArrayList<Course>());
        courseGroup.getCourses().add(course);
    }
}
于 2012-10-26T02:40:41.307 回答
0

您可以使用Maps ( HashMap<String, List<String>>)。

或者,更好地创建类(处理它的适当数据结构):

public class CourseGroup { }

public class Course {
    private List<CourseGroup> courseGroupList = new ArrayList<CourseGroup>();
}

public class Professor {
     private List<Course> courseList = new ArrayList<Course>();
}
于 2012-10-26T02:34:46.397 回答
0

我想您通常会将这些教授、课程和课程组中的每一个都表示为对象。然后一个Professor对象将有一个字段ArrayList<Course>等等。

为了保持简洁,但在这种情况下,我将添加 2 个额外的数据结构:

Map<String, List<String>> profCourses = new HashMap<String, List<String>>();
Map<String, List<String>> courseGroup = new HashMap<String, List<String>>();

可以通过以下方式启动:

List<String> c = new ArrayList<String>();
c.add("Math");
c.add("Biology");
profCourses.put("John", c);

请注意,查找 John 正在教授哪些课程会很快,但要查看哪些教授教授某门课程并不容易,需要遍历 profCourses 地图。

如果需要在另一个方向上快速查找,您可以使用不同的方法或添加冗余数据结构。

于 2012-10-26T02:52:35.567 回答