欢迎来IT培训班!

咨询热线 18940085928

IT培训网 > 知识学习 > JAVA开发 >

Java一对多关系示例

授课机构:IT培训班

地址:北京

网报价格:详询

课程原价:

咨询热线:18940085928

课程详情 相关推荐 学校地址 网上报名

生活中常见一对多关系的例子,如一个学校可以包含多个学生,一个学生属于一个学校,那么这就是一个典型的一对多关系,可以通过集合进行关系的表示。下面是基于集合应用的一个示例,这个示例将作为以后 Java EE 开发的基础。

1)定义学生类


		
  1. import java.util.HashSet;
  2. import java.util.Iterator;
  3.  
  4. public class Student {
  5. private String name; // 定义student类
  6. private int age; // 定义name属性
  7. private School school; // 一个学生属于一个学校
  8.  
  9. // 通过构造方法设置内容
  10. public Student(String name, int age) {
  11. this.setName(name);
  12. this.setAge(age);
  13. }
  14.  
  15. public String getName() {
  16. return name;
  17. }
  18.  
  19. public void setName(String name) {
  20. this.name = name;
  21. }
  22.  
  23. public int getAge() {
  24. return age;
  25. }
  26.  
  27. public void setAge(int age) {
  28. this.age = age;
  29. }
  30.  
  31. public School getSchool() {
  32. return school;
  33. }
  34.  
  35. public void setSchool(School school) {
  36. this.school = school;
  37. }
  38.  
  39. // 重写toString()方法
  40. public String toString() {
  41. return "学生姓名:" + this.name + ":年龄" + this.age;
  42. }
  43. }
在以上的 Student 类中包含了一个 School 属性,表示一个学生属于一个学校。在程序运行时,只需要传入 School 类的引用就可以完成这样的关系。

2)定义学校类


		
  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. public class School {
  5. private String name;
  6. private List<Student> allStudents; // 一个学校有多个学生
  7.  
  8. public School() {
  9. this.allStudents = new ArrayList<Student>();// 实例化List集合
  10. }
  11.  
  12. public School(String name) {
  13. this();
  14. this.setName(name);
  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 List<Student> getAllStudents() {
  26. return allStudents;
  27. }
  28.  
  29. public void setAllStudents(List<Student> allStudents) {
  30. this.allStudents = allStudents;
  31. }
  32.  
  33. // 重写toString()方法
  34. public String toString() {
  35. return "学校名称:" + this.name;
  36. }
  37. }
在定义学校类时定义了一个 List 类型的属性,并指定其泛型类型是 Student 类型,这样一来就表示在一个 School 对象中会包含多个 Student 类型的引用。

3)测试代码,设置关系


		
  1. import java.util.Iterator;
  2.  
  3. public class Test {
  4. public static void main(String[] args) {
  5. // 实例化学校对象
  6. School sch = new School("清华大学");
  7. // 实例化学生对象
  8. Student s1 = new Student("张三", 21);
  9. Student s2 = new Student("李四", 22);
  10. Student s3 = new Student("王五", 23);
  11. // 在学校中加入学生
  12. sch.getAllStudents().add(s1);
  13. sch.getAllStudents().add(s2);
  14. sch.getAllStudents().add(s3);
  15. // 一个学生属于一个学校
  16. s1.setSchool(sch);
  17. s2.setSchool(sch);
  18. s3.setSchool(sch);
  19. // 输出学校信息
  20. System.out.println(sch);
  21.  
  22. // 实例化Iterator对象,用于输出全部的学生信息
  23. Iterator<Student> ite = sch.getAllStudents().iterator();
  24. while (ite.hasNext()) {
  25. System.out.println("\t" + ite.next());
  26. }
  27. }
  28. }
程序运行结果如下:

学校名称:清华大学     学生姓名:张三:年龄21     学生姓名:李四:年龄22     学生姓名:王五:年龄23

以上代码先分别实例化了 School 及 Student 类的对象,之后通过两个类中的属性保存彼此的引用关系,从而形成了一个学校有多个学生,一个学生属于一个学校的一对多关系。
  • 学校名称:IT培训网

    固定电话:18940085928

    授课地址:线下 预约名额

报名信息