A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小歪 中级黑马   /  2014-4-1 10:48  /  878 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小歪 于 2014-4-1 10:48 编辑

                                                                                    一对多关系的实现  Java的类集运用

        先简单说明下我们要做的操作,利用Java代码实现一对多关系,举例说明学生与学校之间的关系。
        一个学校有多个学生,学生的个数属于未知的,那么这样一来肯定无法用普通的对象数组表示,所以必须通过类集表示。

       设计学生信息类:
  1.                                                         //学生信息类
  2. package onetomore;
  3.    
  4. public class Student {
  5.         private String name;  //姓名
  6.         private int age;        //年龄
  7.         private School school;        //所属学校
  8.         
  9.         public Student(String name,int age)   //构造方法
  10.         {
  11.                 this.setName(name);
  12.                 this.setAge(age);
  13.         }
  14.         public void setSchool(School school)        //设置学生所属学校
  15.         {
  16.                 this.school=school;
  17.         }
  18.         
  19.         public School getSchool()        //获得学生所属学校
  20.         {
  21.                 return this.school;
  22.         }
  23.         
  24.         public void setName(String name)
  25.         {
  26.                 this.name=name;
  27.         }
  28.         
  29.         public void setAge(int age)
  30.         {
  31.                 this.age=age;
  32.         }
  33.         
  34.         public String getName()
  35.         {
  36.                 return this.name;
  37.         }
  38.         
  39.         public int getAge()
  40.         {
  41.                 return this.age;
  42.         }
  43.         
  44.         public String toString()   //覆写toString方法,简单输出
  45.         {
  46.                 return "学生姓名:"+this.name+",年龄:"+this.age;
  47.         }
  48. }
复制代码


学校信息类:
  1.                                                 //学校信息类
  2. package onetomore;

  3. import java.util.List;
  4. import java.util.ArrayList;

  5. public class School {
  6.         private String name;        //学校名称
  7.         private List<Student> allStudents;        //学校所包含学生
  8.         
  9.         public School()  
  10.         {
  11.                 this.allStudents=new ArrayList<Student>();  //实例化学校时就生成存放学生空间
  12.         }
  13.         public School(String name)  
  14.         {
  15.                 this();
  16.                 setName(name);
  17.         }
  18.         public void setName(String name)
  19.         {
  20.                 this.name=name;
  21.         }
  22.         
  23.         public String getName()
  24.         {
  25.                 return this.name;
  26.         }
  27.         public List<Student> getAllStudents()
  28.         {
  29.                 return this.allStudents;
  30.         }
  31.         
  32.         public String toString()
  33.         {
  34.                 return "学校名称:"+this.name;
  35.         }
  36. }
复制代码

数据测试类:

  1.                                         //数据测试类
  2. package onetomore;

  3. import java.util.Iterator;

  4. public class Main {
  5.         public static void main(String args[])
  6.         {
  7.                 School sch=new School("兰州石化职业技术学院");  //实例化一个学校
  8.                 Student st1=new Student("张三",18);                           //学生1
  9.                 Student st2=new Student("李四",19);                           //学生2        
  10.                 Student st3=new Student("王五",20);                           //学生3
  11.                 sch.getAllStudents().add(st1);                //学生1添加到学校中
  12.                 sch.getAllStudents().add(st2);                //学生2添加到学校中
  13.                 sch.getAllStudents().add(st3);                //学生3添加到学校中
  14.                 st1.setSchool(sch);                                //设置学生学校
  15.                 st2.setSchool(sch);
  16.                 st3.setSchool(sch);
  17.                
  18.                 //以下是通过学校查询学生
  19.                 System.out.println("以下是通过学校查询学生:");
  20.                 System.out.println(sch);
  21.                 Iterator<Student> iter = sch.getAllStudents().iterator() ;
  22.                 while(iter.hasNext())
  23.                 {
  24.                         System.out.println("\t————|"+iter.next());
  25.                 }
  26.                 //以下是通过学生查询学校
  27.                 System.out.println("\n以下是通过学生查询学校:");
  28.                 System.out.println(st1+"\n\t————|"+st1.getSchool());
  29.         }
  30. }
复制代码

运行结果:




1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马