遍历一个包含另一个列表的列表在 Java 中是一个常见的操作。在这篇文章中,我们将探讨如何有效地遍历一个 List 中包含的 List,并结合代码示例进行解析。我们首先将定义数据结构,然后逐步深入到遍历过程及其细节,最后会用类图和关系图来让读者更好地理解。

一、定义数据结构

首先,我们需要定义一个用于存储的类。在这个示例中,我们将创建一个 Student 类,用于表示学生的信息,并且每个学生有一个成绩列表。我们的主要数据结构是一个 List,它包含多个 Student 的对象,每个 Student 对象又包含一个 List 存储其成绩。

以下是 Student 类的定义:

import java.util.List;

public class Student {
    private String name;
    private List<Integer> scores; // 存储每个学生的成绩

    // 构造函数
    public Student(String name, List<Integer> scores) {
        this.name = name;
        this.scores = scores;
    }

    // Getter 方法
    public String getName() {
        return name;
    }

    public List<Integer> getScores() {
        return scores;
    }
}

二、创建包含学生的列表

接下来,我们将创建一个包含多个 Student 对象的 List。

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

public class StudentListDemo {
    public static void main(String[] args) {
        // 创建成绩列表
        List<Integer> scores1 = new ArrayList<>(Arrays.asList(85, 90, 78));
        List<Integer> scores2 = new ArrayList<>(Arrays.asList(88, 76, 92));
        
        // 创建学生对象
        Student student1 = new Student("Alice", scores1);
        Student student2 = new Student("Bob", scores2);
        
        // 创建学生列表
        List<Student> students = new ArrayList<>(Arrays.asList(student1, student2));
        
        // 遍历学生列表
        printStudentScores(students);
    }

    private static void printStudentScores(List<Student> students) {
        for (Student student : students) {
            System.out.println("Student Name: " + student.getName());
            System.out.print("Scores: ");
            // 遍历每个学生的成绩
            for (Integer score : student.getScores()) {
                System.out.print(score + " ");
            }
            System.out.println();
        }
    }
}

三、代码解析

在上面的代码中,我们首先创建了两个学生对象 student1student2,每个学生都有自己的名称和成绩列表。然后我们将这两个学生对象添加到一个 List 中。通过调用 printStudentScores 方法,我们可以遍历这个学生列表,输出每个学生的名称和成绩。

遍历逻辑

  1. 首先遍历学生的 List(students)。
  2. 对于每一个 Student 对象,获取其姓名。
  3. 然后获取学生的成绩 List,并在其中进行遍历,以输出每个成绩。

四、类图与关系图

为了进一步说明我们的数据结构,以下是类图和关系图。

类图

classDiagram
    class Student {
        +String name
        +List<Integer> scores
        +getName(): String
        +getScores(): List<Integer>
    }

关系图

erDiagram
    STUDENT ||--o{ SCORE: has
    STUDENT {
        string name
    }
    SCORE {
        integer score
    }

五、总结

通过上述示例,我们成功构建了一个包含学生及其成绩的嵌套列表的结构,并使用了 Java 的列表遍历特性来演示如何逐一访问嵌套的 List。这样的结构在很多情况下都十分实用,比如在处理班级学生成绩、订单产品清单等场景中。

使用 Java 的 List 和简单的循环语句,我们可以快速地遍历复杂的数据结构。并且,通过使用清晰有序的类设计,我们更容易扩展功能或者对数据进行处理。

希望这篇文章对您理解如何在 Java 中遍历包含 List 的 List 能有所帮助!如有任何疑问,请随时提出。