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 にリンクしたいと考えています。これは、1 つのコースが複数のクラスを持つ可能性があるためです。つまり、John 教授がどのコースを教えているか、および彼が割り当てられているコース グループの記録のようなものです。

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

通常、これらの教授、コース、および courseGroups のそれぞれをオブジェクトとして表すと思います。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 に答える