Java類集 _範例講解:多對多關係
阿新 • • 發佈:2018-12-23
例項要求
一個學生可以選多門課程, 門課程可以有多個學生參加,那麼這就是一個典型的多對多關係。
要完成本程式,首先應該定義兩個類:學生資訊類Student、課程資訊類Course,在一個學生類中存在一個集合,儲存全部的課程,而在課程類中也要存在一個集合,儲存全部的學生。
例項主要採用的知識
1、List 集合
2、引用傳遞
3、Iteratro
學生類:
課程類: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.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 ; } };
總結: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) ; } } };
1、此處 多對多關係只是在這種單獨類,這樣的類可以表示成實體類。只是在這上面設定的關係。