JAVA 一对多关系

使用类集可以表示出以下关系:一个学校可以包含多个学生,一个学生属于一个学校,那么这就是一个典型的一对多关系,此时就可以通过类集进行关系的表示。

范例:定义学生类

 
 
  1. package org.lxh.demo13.execdemo01;  
  2. public class Student {                          // 定义Student类  
  3.     private String name ;                       // 定义name属性  
  4.     private int age ;                           // 定义age属性  
  5.     private School school ;                     // 一个学生属于一个学校  
  6.     public Student(String name,int age){        // 通过构造设置内容  
  7.         this.setName(name) ;                    // 设置name属性内容  
  8.         this.setAge(age) ;                      // 设置age属性内容  
  9.     }  
  10.     public String getName() {                   // 返回name属性内容  
  11.         return name;  
  12.     }  
  13.     public void setName(String name) {          // 设置name属性内容  
  14.         this.name = name;  
  15.     }  
  16.     public int getAge() {                       // 返回age属性内容  
  17.         return age;  
  18.     }  
  19.     public void setAge(int age) {               // 设置age属性内容  
  20.         this.age = age;  
  21.     }  
  22.     public School getSchool() {                 // 返回所在学校  
  23.         return school;  
  24.     }  
  25.     public void setSchool(School school) {      // 设置所在学校  
  26.         this.school = school;  
  27.     }  
  28.     public String toString(){                   // 覆写toString()方法  
  29.         return "学生姓名:" + this.name + ";年龄:" + this.age ;   
  30.     }  

在以上的Student类中包含了一个School属性,表示一个学生属于一个学校。在程序运行时,只需要传入School类的引用就可以完成这样的关系。

范例:定义学校类

 
 
  1. package org.lxh.demo13.execdemo01;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4. public class School {                                // 定义School类  
  5.     private String name ;                            // 定义name属性  
  6.     private List<Student> allStudents ;          // 一个学校有多个学生  
  7.     public School(){                                 // 无参构造  
  8.         this.allStudents = new ArrayList<Student>() ;// 实例化List集合  
  9.     }  
  10.     public School(String name){                      // 通过构造设置name属性  
  11.         this() ;                                     // 调用无参构造  
  12.         this.setName(name) ;                         // 设置name属性内容  
  13.     }  
  14.     public String getName() {                        // 取得name属性内容  
  15.         return name;  
  16.     }  
  17.     public void setName(String name) {               // 设置name属性内容  
  18.         this.name = name;  
  19.     }  
  20.     public List<Student> getAllStudents() {      // 取得全部的学生  
  21.         return allStudents;  
  22.     }  
  23.     public String toString(){                        // 覆写toString()方法  
  24.         return "学校名称:" + this.name ;  
  25.     }  

在定义学校类时定义了一个List类型的属性,并指定其泛型类型是Student类型,这样一来就表示在一个School对象中会包含多个Student类型的引用。

范例:测试程序,并设置关系

 
 
  1. package org.lxh.demo13.execdemo01;  
  2. import java.util.Iterator;  
  3. public class TestDemo {  
  4.     public static void main(String[] args) {  
  5.         School sch = new School("清华大学");    
    // 实例化学校对象  
  6.         Student s1 = new Student("张三",21);   
    // 实例化学生对象  
  7.         Student s2 = new Student("李四",22);   
    // 实例化学生对象  
  8.         Student s3 = new Student("王五",23);   
    // 实例化学生对象  
  9.         sch.getAllStudents().add(s1);     
    // 在学校中加入学生  
  10.         sch.getAllStudents().add(s2);     
    // 在学校中加入学生  
  11.         sch.getAllStudents().add(s3);    
    // 在学校中加入学生  
  12.         s1.setSchool(sch);              
    // 一个学生属于一个学校  
  13.         s2.setSchool(sch);               
    // 一个学生属于一个学校  
  14.         s3.setSchool(sch);                
    // 一个学生属于一个学校  
  15.         System.out.println(sch);              
    // 输出学校信息  
  16.         // 实例化Iterator对象,用于输出全部的学生信息  
  17.         Iterator<Student> iter = sch.
    getAllStudents().iterator();  
  18.         while (iter.hasNext()) {             
    // 迭代输出  
  19.             System.out.println("/t|- " + 
    iter.next());// 输出信息  
  20.         }  
  21.     }  

程序运行结果:

 
 
  1. 学校名称:清华大学  
  2.     |- 学生姓名:张三;年龄:21 
  3.     |- 学生姓名:李四;年龄:22 
  4.     |- 学生姓名:王五;年龄:23 

程序首先分别实例化了School及Student类的对象,之后通过两个类中的属性保存彼此的引用关系,从而形成了一个学校有多个学生,一个学生属于一个学校的一对多关系。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值