〖Java類集〗_範例講解:多對多關係筆記
執行個體要求:
一個學生可以選多門課程,一門課程可以有多個學生參加,那麼這就是一個典型的多對多關係。
要完成本程式,首先應該定義兩個類:學生資訊類Student、課程資訊類Course,在一個學生類中存在一個集合,儲存全部的課程,而在課程中也要存在一個類集,儲存全部的學生。
3、本執行個體主要採用的知識
1.List集合
2.引用傳遞
3.Iterator
4、具體內容
Course.java
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 itn getCredit(){ return this.credit; } public String toString(){ return "課程名稱:"+this.name+"; 課程學分:"+this.credit; }}
Student.java
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 ; }};
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) ; } }};