1. 需求:
我们班有学生,每一个学生是不是一个对象。所以我们可以使用一个集合表示我们班级的学生。ArrayList<Student>
但是呢,我们旁边是不是还有班级,每个班级是不是也是一个ArrayList<Student>。
而我现在有多个ArrayList<Student>。也要用集合存储,怎么办呢?
就是这个样子的:ArrayList<ArrayList<Student>>
2. 案例
(1)案例图解:
(2)代码实现:
• 首先编写一个学生类Student.java,如下:
1 package cn.itcast_01; 2 3 public class Student { 4 private String name; 5 private int age; 6 7 public Student() { 8 super(); 9 } 10 11 public Student(String name, int age) { 12 super(); 13 this.name = name; 14 this.age = age; 15 } 16 17 public String getName() { 18 return name; 19 } 20 21 public void setName(String name) { 22 this.name = name; 23 } 24 25 public int getAge() { 26 return age; 27 } 28 29 public void setAge(int age) { 30 this.age = age; 31 } 32 33 }
• 逻辑实现类ArrayListDemo.java,如下:
1 package cn.itcast_01; 2 3 import java.util.ArrayList; 4 5 /* 6 * 集合的嵌套遍历 7 * 需求: 8 * 我们班有学生,每一个学生是不是一个对象。所以我们可以使用一个集合表示我们班级的学生。ArrayList<Student> 9 * 但是呢,我们旁边是不是还有班级,每个班级是不是也是一个ArrayList<Student>。 10 * 而我现在有多个ArrayList<Student>。也要用集合存储,怎么办呢? 11 * 就是这个样子的:ArrayList<ArrayList<Student>> 12 */ 13 public class ArrayListDemo { 14 public static void main(String[] args) { 15 // 创建大集合 16 ArrayList<ArrayList<Student>> bigArrayList = new ArrayList<ArrayList<Student>>(); 17 18 // 创建第一个班级的学生集合 19 ArrayList<Student> firstArrayList = new ArrayList<Student>(); 20 // 创建学生 21 Student s1 = new Student("唐僧", 30); 22 Student s2 = new Student("孙悟空", 29); 23 Student s3 = new Student("猪八戒", 28); 24 Student s4 = new Student("沙僧", 27); 25 Student s5 = new Student("白龙马", 26); 26 // 学生进班 27 firstArrayList.add(s1); 28 firstArrayList.add(s2); 29 firstArrayList.add(s3); 30 firstArrayList.add(s4); 31 firstArrayList.add(s5); 32 // 把第一个班级存储到学生系统中 33 bigArrayList.add(firstArrayList); 34 35 // 创建第二个班级的学生集合 36 ArrayList<Student> secondArrayList = new ArrayList<Student>(); 37 // 创建学生 38 Student s11 = new Student("诸葛亮", 30); 39 Student s22 = new Student("司马懿", 28); 40 Student s33 = new Student("周瑜", 26); 41 // 学生进班 42 secondArrayList.add(s11); 43 secondArrayList.add(s22); 44 secondArrayList.add(s33); 45 // 把第二个班级存储到学生系统中 46 bigArrayList.add(secondArrayList); 47 48 // 创建第三个班级的学生集合 49 ArrayList<Student> thirdArrayList = new ArrayList<Student>(); 50 // 创建学生 51 Student s111 = new Student("宋江", 40); 52 Student s222 = new Student("吴用", 35); 53 Student s333 = new Student("高俅", 30); 54 Student s444 = new Student("李师师", 22); 55 // 学生进班 56 thirdArrayList.add(s111); 57 thirdArrayList.add(s222); 58 thirdArrayList.add(s333); 59 thirdArrayList.add(s444); 60 // 把第三个班级存储到学生系统中 61 bigArrayList.add(thirdArrayList); 62 63 // 遍历集合 64 for (ArrayList<Student> array : bigArrayList) { 65 for (Student s : array) { 66 System.out.println(s.getName() + "---" + s.getAge()); 67 } 68 } 69 } 70 }
运行结果,如下: