使用类集可以表示出以下关系:一个学校可以包含多个学生,一个学生属于一个学校,那么这就是一个典型的一对多关系,此时就可以通过类集进行关系的表示。
范例:定义学生类
- package org.lxh.demo13.execdemo01;
- public class Student { // 定义Student类
- private String name ; // 定义name属性
- private int age ; // 定义age属性
- private School school ; // 一个学生属于一个学校
- public Student(String name,int age){ // 通过构造设置内容
- this.setName(name) ; // 设置name属性内容
- this.setAge(age) ; // 设置age属性内容
- }
- public String getName() { // 返回name属性内容
- return name;
- }
- public void setName(String name) { // 设置name属性内容
- this.name = name;
- }
- public int getAge() { // 返回age属性内容
- return age;
- }
- public void setAge(int age) { // 设置age属性内容
- this.age = age;
- }
- public School getSchool() { // 返回所在学校
- return school;
- }
- public void setSchool(School school) { // 设置所在学校
- this.school = school;
- }
- public String toString(){ // 覆写toString()方法
- return "学生姓名:" + this.name + ";年龄:" + this.age ;
- }
- }
在以上的Student类中包含了一个School属性,表示一个学生属于一个学校。在程序运行时,只需要传入School类的引用就可以完成这样的关系。
范例:定义学校类
- package org.lxh.demo13.execdemo01;
- import java.util.ArrayList;
- import java.util.List;
- public class School { // 定义School类
- private String name ; // 定义name属性
- private List<Student> allStudents ; // 一个学校有多个学生
- public School(){ // 无参构造
- this.allStudents = new ArrayList<Student>() ;// 实例化List集合
- }
- public School(String name){ // 通过构造设置name属性
- this() ; // 调用无参构造
- this.setName(name) ; // 设置name属性内容
- }
- public String getName() { // 取得name属性内容
- return name;
- }
- public void setName(String name) { // 设置name属性内容
- this.name = name;
- }
- public List<Student> getAllStudents() { // 取得全部的学生
- return allStudents;
- }
- public String toString(){ // 覆写toString()方法
- return "学校名称:" + this.name ;
- }
- }
在定义学校类时定义了一个List类型的属性,并指定其泛型类型是Student类型,这样一来就表示在一个School对象中会包含多个Student类型的引用。
范例:测试程序,并设置关系
- package org.lxh.demo13.execdemo01;
- import java.util.Iterator;
- public class TestDemo {
- public static void main(String[] args) {
- School sch = new School("清华大学");
// 实例化学校对象- Student s1 = new Student("张三",21);
// 实例化学生对象- Student s2 = new Student("李四",22);
// 实例化学生对象- Student s3 = new Student("王五",23);
// 实例化学生对象- sch.getAllStudents().add(s1);
// 在学校中加入学生- sch.getAllStudents().add(s2);
// 在学校中加入学生- sch.getAllStudents().add(s3);
// 在学校中加入学生- s1.setSchool(sch);
// 一个学生属于一个学校- s2.setSchool(sch);
// 一个学生属于一个学校- s3.setSchool(sch);
// 一个学生属于一个学校- System.out.println(sch);
// 输出学校信息- // 实例化Iterator对象,用于输出全部的学生信息
- Iterator<Student> iter = sch.
getAllStudents().iterator();- while (iter.hasNext()) {
// 迭代输出- System.out.println("/t|- " +
iter.next());// 输出信息- }
- }
- }
程序运行结果:
- 学校名称:清华大学
- |- 学生姓名:张三;年龄:21
- |- 学生姓名:李四;年龄:22
- |- 学生姓名:王五;年龄:23
程序首先分别实例化了School及Student类的对象,之后通过两个类中的属性保存彼此的引用关系,从而形成了一个学校有多个学生,一个学生属于一个学校的一对多关系。