例如:一个学生可以选择多个学科,多个学科又可以被不同的学生选学
代码1-----学科类
import java.util.List ;
import java.util.ArrayList ;
public class Course{
   private String name ;
   private int credit ;
   private List<Student> allStudents ;
   public Course(){
     this.allStudents = new ArrayList<Student>() ;
  }
   public Course(String name, int credit){
     this() ;
     this.name = name ;
     this.credit = credit ;
  }
   public List<Student> getAllStudents(){
     return this.allStudents ;
  }
   public void setName(String name){
     this.name = name    ;
  }
   public void setCredit( int credit){
     this.credit = credit ;
  }
   public String getName(){
     return this.name ;
  }
   public int getCredit(){
     return this.credit ;
  }
   public String toString(){
     return "课程名称:" + this.name + ";课程学分:" + this.credit ;
  }
};
代码2----学生类
import java.util.List ;
import java.util.ArrayList ;
public class Student{
   private String name ;
   private int age ;
   private List<Course> allCourses ;
   public Student(){
     this.allCourses = new ArrayList<Course>() ;
  }
   public Student(String name, int age){
     this() ;
     this.name = name ;
     this.age = age ;
  }
   public List<Course> getAllCourses(){
     return this.allCourses ;
  }
   public void setName(String name){
     this.name = name ;
  }
   public void setAge( int age){
     this.age = age ;
  }
   public String getName(){
     return this.name ;
  }
   public int getAge(){
     return this.age ;
  }
   public String toString(){
     return "学生姓名:" + this.name + ";年龄:" + this.age ;
  }
};
代码3----多对多关系
import java.util.Iterator ;
public class TestMore{
   public static void main(String args[]){
    Course c1 = new Course( "英语",3  ) ;   // 第一门课程
    Course c2 = new Course( "计算机",5) ;   // 第二门课程
    Student s1 = new Student( "张三",20) ;
    Student s2 = new Student( "李四",21) ;
    Student s3 = new Student( "王五",22) ;
    Student s4 = new Student( "赵六",23) ;
    Student s5 = new Student( "孙七",24) ;
    Student s6 = new Student( "钱八",24) ;
     // 第一门课程有三个学生参加
    c1.getAllStudents().add(s1) ;
    c1.getAllStudents().add(s2) ;
    c1.getAllStudents().add(s6) ;
    s1.getAllCourses().add(c1) ;
    s2.getAllCourses().add(c1) ;
    s6.getAllCourses().add(c1) ;
     // 第二门课程有六个学生参加
    c2.getAllStudents().add(s1) ;
    c2.getAllStudents().add(s2) ;
    c2.getAllStudents().add(s3) ;
    c2.getAllStudents().add(s4) ;
    c2.getAllStudents().add(s5) ;
    c2.getAllStudents().add(s6) ;
    s1.getAllCourses().add(c2) ;
    s2.getAllCourses().add(c2) ;
    s3.getAllCourses().add(c2) ;
    s4.getAllCourses().add(c2) ;
    s5.getAllCourses().add(c2) ;
    s6.getAllCourses().add(c2) ;
     // 输出一门课程的信息,观察一门课程有多少个学生参加\
    System.out.println(c1) ;
    Iterator<Student> iter1 = c1.getAllStudents().iterator() ;
     while(iter1.hasNext()){
      Student s = iter1.next() ;
      System.out.println( "\t|- " + s) ;
    }
     // 通过学生找到学生参加的课程
    System.out.println(s6) ;
    Iterator<Course> iter2 = s6.getAllCourses().iterator() ;
     while(iter2.hasNext()){
      Course c = iter2.next() ;
      System.out.println( "\t|- " + c) ;
    }
  }
};