Java如何嵌套三个List集合

在Java编程中,集合(Collection)是处理多个对象的重要结构。为了处理更加复杂的数据,我们可以使用嵌套的集合(如:List嵌套List)。今天,我们将探讨如何嵌套三个List集合,并通过一个具体的示例来解决一个实际问题。

具体问题

假设我们要管理一个学校的课程信息,每个课程包含一个教师、多个学生和他们的成绩。我们可以用三层List集合来实现这个需求:第一个List存放每门课程,第二个List存放每课程的学生,第三个List存放每名学生的成绩。这样通过嵌套的结构,我们可以方便地访问和管理数据。

方案设计

在这个方案中,我们将使用以下结构:

  1. 课程包含一个教师名和一个学生列表。
  2. 学生包含一个学生姓名和一个成绩列表。
  3. 成绩是一个简单的数值(如:分数)。

数据类定义

首先,我们定义三个类:CourseStudentGrade

import java.util.ArrayList;
import java.util.List;

class Grade {
    private int score;

    public Grade(int score) {
        this.score = score;
    }

    public int getScore() {
        return score;
    }
}

class Student {
    private String name;
    private List<Grade> grades;

    public Student(String name) {
        this.name = name;
        this.grades = new ArrayList<>();
    }

    public String getName() {
        return name;
    }

    public void addGrade(Grade grade) {
        grades.add(grade);
    }

    public List<Grade> getGrades() {
        return grades;
    }
}

class Course {
    private String teacher;
    private List<Student> students;

    public Course(String teacher) {
        this.teacher = teacher;
        this.students = new ArrayList<>();
    }

    public String getTeacher() {
        return teacher;
    }

    public void addStudent(Student student) {
        students.add(student);
    }

    public List<Student> getStudents() {
        return students;
    }
}

主程序实现

我们将编写主程序来创建课程、学生以及成绩,并遍历显示这些信息。

public class SchoolManagement {
    public static void main(String[] args) {
        // 创建课程
        Course course1 = new Course("Mr. Zhang");
        Course course2 = new Course("Ms. Liu");

        // 创建学生
        Student student1 = new Student("Alice");
        student1.addGrade(new Grade(90));
        student1.addGrade(new Grade(85));

        Student student2 = new Student("Bob");
        student2.addGrade(new Grade(78));
        student2.addGrade(new Grade(88));

        // 将学生添加到课程中
        course1.addStudent(student1);
        course1.addStudent(student2);

        // 遍历课程、学生和成绩
        for (Student student : course1.getStudents()) {
            System.out.println("Student: " + student.getName());
            for (Grade grade : student.getGrades()) {
                System.out.println("Grade: " + grade.getScore());
            }
        }
    }
}

数据输出

运行以上代码,将会输出如下信息:

Student: Alice
Grade: 90
Grade: 85
Student: Bob
Grade: 78
Grade: 88

甘特图展示

为了让项目管理更加清晰,我们可以使用甘特图来展示计划。

gantt
    title 项目计划
    dateFormat  YYYY-MM-DD
    section 课程管理
    定义课程           :a1, 2023-10-01, 30d
    添加学生           :after a1  , 20d
    记录成绩           :after a1  , 15d
    显示信息           :after a1  , 10d

结论

在本文中,我们展示了如何在Java中嵌套三个List集合,以便于管理复杂的层次结构数据。通过具体的例子,我们创建了课程、学生和成绩的关系,并通过代码清楚地展示了数据的存取过程。此外,甘特图的使用使得项目规划更加直观,便于进一步的开发道路。通过深入理解和应用嵌套集合,我们可以为解决更复杂的编程问题铺平道路,为日后的软件开发提供更多的灵活性和可扩展性。