Java如何嵌套三个List集合
在Java编程中,集合(Collection)是处理多个对象的重要结构。为了处理更加复杂的数据,我们可以使用嵌套的集合(如:List嵌套List)。今天,我们将探讨如何嵌套三个List集合,并通过一个具体的示例来解决一个实际问题。
具体问题
假设我们要管理一个学校的课程信息,每个课程包含一个教师、多个学生和他们的成绩。我们可以用三层List集合来实现这个需求:第一个List存放每门课程,第二个List存放每课程的学生,第三个List存放每名学生的成绩。这样通过嵌套的结构,我们可以方便地访问和管理数据。
方案设计
在这个方案中,我们将使用以下结构:
- 课程包含一个教师名和一个学生列表。
- 学生包含一个学生姓名和一个成绩列表。
- 成绩是一个简单的数值(如:分数)。
数据类定义
首先,我们定义三个类:Course
、Student
和Grade
。
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
集合,以便于管理复杂的层次结构数据。通过具体的例子,我们创建了课程、学生和成绩的关系,并通过代码清楚地展示了数据的存取过程。此外,甘特图的使用使得项目规划更加直观,便于进一步的开发道路。通过深入理解和应用嵌套集合,我们可以为解决更复杂的编程问题铺平道路,为日后的软件开发提供更多的灵活性和可扩展性。