加入收藏 | 设为首页 | 会员中心 | 我要投稿 景德镇站长网 (https://www.0798zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

Java一对多关系示例

发布时间:2022-07-13 11:15:20 所属栏目:语言 来源:互联网
导读:生活中常见一对多关系的例子,如一个学校可以包含多个学生,一个学生属于一个学校,那么这就是一个典型的一对多关系,可以通过集合进行关系的表示。下面是基于集合应用的一个示例,这个示例将作为以后 Java EE 开发的基
  生活中常见一对多关系的例子,如一个学校可以包含多个学生,一个学生属于一个学校,那么这就是一个典型的一对多关系,可以通过集合进行关系的表示。下面是基于集合应用的一个示例,这个示例将作为以后 Java EE 开发的基础。
  1)定义学生类
  import java.util.HashSet;
  import java.util.Iterator;
  public class Student {
      private String name; // 定义student类
      private int age; // 定义name属性
      private School school; // 一个学生属于一个学校
      // 通过构造方法设置内容
      public Student(String name, int age) {
          this.setName(name);
          this.setAge(age);
      }
      public String getName() {
          return name;
      }
      public void setName(String name) {
          this.name = name;
      }
      public int getAge() {
          return age;
      }
      public void setAge(int age) {
          this.age = age;
      }
      public School getSchool() {
          return school;
      }
      public void setSchool(School school) {
          this.school = school;
      }
      // 重写toString()方法
      public String toString() {
          return "学生姓名:" + this.name + ":年龄" + this.age;
      }
  }
  在以上的 Student 类中包含了一个 School 属性,表示一个学生属于一个学校。在程序运行时,只需要传入 School 类的引用就可以完成这样的关系。
  2)定义学校类
  import java.util.ArrayList;
  import java.util.List;
  public class School {
      private String name;
      private List<Student> allStudents; // 一个学校有多个学生
      public School() {
          this.allStudents = new ArrayList<Student>();// 实例化List集合
      }
      public School(String name) {
          this();
          this.setName(name);
      }
      public String getName() {
          return name;
      }
      public void setName(String name) {
          this.name = name;
      }
      public List<Student> getAllStudents() {
          return allStudents;
      }
      public void setAllStudents(List<Student> allStudents) {
          this.allStudents = allStudents;
      }
      // 重写toString()方法
      public String toString() {
          return "学校名称:" + this.name;
      }
  }
  在定义学校类时定义了一个 List 类型的属性,并指定其泛型类型是 Student 类型,这样一来就表示在一个 School 对象中会包含多个 Student 类型的引用。
  3)测试代码,设置关系
  import java.util.Iterator;
  public class Test {
      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> ite = sch.getAllStudents().iterator();
          while (ite.hasNext()) {
              System.out.println("t" + ite.next());
          }
      }
  }
  程序运行结果如下:
  学校名称:清华大学
      学生姓名:张三:年龄21
      学生姓名:李四:年龄22
      学生姓名:王五:年龄23
 
  以上代码先分别实例化了 School 及 Student 类的对象,之后通过两个类中的属性保存彼此的引用关系,从而形成了一个学校有多个学生,一个学生属于一个学校的一对多关系。

(编辑:景德镇站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!