java:类集操作,多对多的关系

 

//一个课程有多个学生报名,
//一个学生可以报名多个课程

 

 

demo.java, Student.java, Course.java'

public class Course {

	private String name;
	private int course;
	private List<Student> allStudent;
	
	
	
	public Course() {
		this.allStudent = new ArrayList<Student>();
	}

	public Course(String name, int course) {
		this();
		this.name = name;
		this.course = course;
	}

	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public int getCourse() {
		return course;
	}
	
	public void setCourse(int course) {
		this.course = course;
	}
	
	public List<Student> getAllStudent() {
		return allStudent;
	}
	
	
	public String toString()
	{
		return "课程:"+this.name +",学分:"+this.course;
	}
	
	
	
	
	
	
	
	
}

  

Student.java

public class Student {

	private String name;
	private int age;
	private List<Course> allCourse;
	
	
	
	
	
	
	
	public Student() {
		this.allCourse = new ArrayList<Course>();
	}


	public Student(String name, int age) {
		this();
		this.name = name;
		this.age = age;
		
	}


	public String getName() {
		return name;
	}
	
	
	public void setName(String name) {
		this.name = name;
	}
	
	
	public int getAge() {
		return age;
	}
	
	
	public void setAge(int age) {
		this.age = age;
	}
	
	
	public List<Course> getAllCourse() {
		return allCourse;
	}


	public String toString()
	{
		return "学生:"+this.name + ",年龄:"+this.age;
	}
	
	
	
	
	
}

  

demo.java

//一个学生可以报名多个课程
		Course c1 = new Course("java",5);
		Course c2 = new Course("linux",5);
		
		Student st1 = new Student("张三",22);
		Student st2 = new Student("李四",33);
		Student st3 = new Student("王五",32);
		Student st4 = new Student("田七",29);
		Student st5 = new Student("赵六",28);
		
		//第一课程
		c1.getAllStudent().add(st1);
		c1.getAllStudent().add(st3);
		st1.getAllCourse().add(c1);
		st2.getAllCourse().add(c2);
		
		//第二课程
		c2.getAllStudent().add(st1);
		c2.getAllStudent().add(st2);
		c2.getAllStudent().add(st3);
		c2.getAllStudent().add(st4);
		c2.getAllStudent().add(st5);
		st1.getAllCourse().add(c2);
		st2.getAllCourse().add(c2);
		st3.getAllCourse().add(c2);
		st4.getAllCourse().add(c2);
		st5.getAllCourse().add(c2);
		
		//输出
		System.out.println(c1);
		Iterator<Student> stu = c1.getAllStudent().iterator();		
		while(stu.hasNext())
		{
			System.out.println("__" + stu.next());
		}
		System.out.println(st1);
		Iterator<Course> cour = st1.getAllCourse().iterator();		
		while(cour.hasNext())
		{
			System.out.println( "__" + cour.next());
		}

  

 

输出的结果为:

课程:java,学分:5
__学生:张三,年龄:22
__学生:王五,年龄:32
学生:张三,年龄:22
__课程:java,学分:5
__课程:linux,学分:5