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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

                                                                                                                                                                            Java类集 范例讲解——多对多关系

实例要求:
      一个学生可以选多门课程,一门课程可以有多名学生参加那么这就是一个典型的多对多关系;
      要完成本程序,首先应该定义两个类 学生信息类(Student)、课程信息类(Course),在学生类中存在一个集合,保存所参加的所有课程,同理课程类中也需要一个集合,保存参加此课程的学生。


本实例所用到知识:
      1、List集合运用
      2、引用传递
      3、Iterator输出运用


学生信息类:
  1. import java.util.ArrayList;
  2. import java.util.List;

  3. public class Student {
  4.         private String name;
  5.         private int age;
  6.         private List<Course> allcou=null;
  7.         public Student()
  8.         {
  9.                 allcou=new ArrayList<Course>();
  10.         }
  11.         public Student(String name,int age)
  12.         {
  13.                 this();
  14.                 this.name=name;
  15.                 this.age=age;
  16.         }
  17.         public List<Course> getAllcou()
  18.         {
  19.                 return this.allcou;
  20.         }
  21.        
  22.         public void setName(String name){
  23.                 this.name=name;
  24.         }
  25.         public void setAge(int age){
  26.                 this.age=age;
  27.         }
  28.         public String getName(){
  29.                 return this.name;
  30.         }
  31.         public int getAge(){
  32.                 return this.age;
  33.         }
  34.        
  35.         public  String toString(){
  36.                 return "学生姓名:"+this.name+",年龄:"+this.age;
  37.         }
  38. }
复制代码

课程信息类:

  1. import java.util.List;
  2. import java.util.ArrayList;

  3. public class Course {
  4.         private String name;
  5.         private int credit;
  6.         private List<Student> allstu=null;
  7.         public Course(){
  8.                 allstu=new ArrayList<Student>();
  9.         }
  10.         public Course(String name,int credit){
  11.                 this();
  12.                 this.name=name;
  13.                 this.credit=credit;
  14.         }
  15.        
  16.         public List<Student> getAllstu(){
  17.                 return this.allstu;
  18.         }
  19.        
  20.         public void setName(String name){
  21.                 this.name=name;
  22.         }
  23.         public void setCredit(int credit){
  24.                 this.credit=credit;
  25.         }
  26.         public String getName(){
  27.                 return this.name;
  28.         }
  29.         public int getAge(){
  30.                 return this.credit;
  31.         }
  32.         public String toString(){
  33.                 return "课程名称:"+this.name+",学分:"+this.credit;
  34.         }
  35. }
复制代码

测试运行:

  1. import java.util.Iterator;


  2. public class Main {
  3.         public static void main(String args[]){
  4.                 Course c1=new Course("《Java程序设计》",10);
  5.                 Course c2=new Course("《数据结构》",15);
  6.                 Student s1=new Student("张三",19);
  7.                 Student s2=new Student("李四",20);
  8.                 Student s3=new Student("王五",21);
  9.                 Student s4=new Student("赵六",22);
  10.                 Student s5=new Student("孙七",23);
  11.                 //设置关系:第一门课程有3人参加
  12.                 c1.getAllstu().add(s1);
  13.                 c1.getAllstu().add(s2);
  14.                 c1.getAllstu().add(s3);
  15.                 s1.getAllcou().add(c1);
  16.                 s2.getAllcou().add(c1);
  17.                 s3.getAllcou().add(c1);
  18.                 //设置关系:第二门课程所有人都参加
  19.                 c2.getAllstu().add(s1);
  20.                 c2.getAllstu().add(s2);
  21.                 c2.getAllstu().add(s3);
  22.                 c2.getAllstu().add(s4);
  23.                 c2.getAllstu().add(s5);
  24.                 s1.getAllcou().add(c2);
  25.                 s2.getAllcou().add(c2);
  26.                 s3.getAllcou().add(c2);
  27.                 s4.getAllcou().add(c2);
  28.                 s5.getAllcou().add(c2);
  29.                 //输出每门课程 以及参加人数
  30.                 System.out.println("\n"+c1+":"+"(共"+c1.getAllstu().size()+"人)");
  31.                 Iterator<Student> iter1=c1.getAllstu().iterator();
  32.                 while(iter1.hasNext()){
  33.                         System.out.println("————|"+iter1.next());
  34.                 }
  35.                 //课程1
  36.                
  37.                 System.out.println("\n"+c2+":"+"(共"+c2.getAllstu().size()+"人)");
  38.                 Iterator<Student> iter2=c2.getAllstu().iterator();
  39.                 while(iter2.hasNext()){
  40.                         System.out.println("————|"+iter2.next());
  41.                 }
  42.                 //课程2
  43.                
  44.                 //通过学生找到课程,举例通过 张三(s1)找到他所参加的课程
  45.                 System.out.println("\n"+s1+":(共参加"+s1.getAllcou().size()+"门课程)");
  46.                 Iterator<Course> iter3=s1.getAllcou().iterator();
  47.                 while(iter3.hasNext()){
  48.                         System.out.println("————|"+iter3.next());
  49.                 }
  50.         }
  51. }
复制代码

运行结果:






1 个回复

倒序浏览
哥们不错是不错,但不是最好,没有最好,只有更好。嘻嘻
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马