Java多对多关系示例
生活随笔
收集整理的這篇文章主要介紹了
Java多对多关系示例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
使用集合不僅可以表示一對一的關(guān)系,也可以表示多對多的關(guān)系。例如,一個學(xué)生可以選多門課程,一門課程可以有多個學(xué)生參加,那么這就是一個典型的多對多關(guān)系。
要完成上面要求,首先應(yīng)該定義兩個類,分別是學(xué)生信息(Student)類、課程信息(Course)類。在學(xué)生類中存在一個集合,保存全部的課程。同樣,在課程類中也要存在一個集合,保存全部的學(xué)生。
1 . 定義學(xué)生類
在學(xué)生類中存在一個 allCourses 的 List 集合,這樣在程序運(yùn)行時,一個學(xué)生類中可以保存多個 Course 對象。
2 . 定義課程類
public class Course {private String name;private int credit;// 定義集合保存多個學(xué)生private List<Student> allStudents;private Course() {// 實(shí)例化List集合this.allStudents = new ArrayList<Student>();}public Course(String name, int credit) {this();this.setName(name);this.setCredit(credit);}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getCredit() {return credit;}public void setCredit(int credit) {this.credit = credit;}public List<Student> getAllStudents() {return allStudents;}public void setAllStudents(List<Student> allStudents) {this.allStudents = allStudents;}// 重寫toString()方法public String toString() {return "課程名稱" + this.name + ";課程學(xué)分" + this.credit;} }課程類與學(xué)生類一樣,都定義了一個 List 集合,用于保存多個學(xué)生信息。
3 . 測試程序
public class TestMore {public static void main(String[] args) {// 實(shí)例化課程對象Course c1 = new Course("英語", 3);Course c2 = new Course("計(jì)算機(jī)", 5);// 實(shí)例化學(xué)生對象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("錢八", 25);// 第一門課程有3個人參加,向課程中增加3個學(xué)生信息,同時向?qū)W生中增加課程信息c1.getAllStudents().add(s1);c1.getAllStudents().add(s2);c1.getAllStudents().add(s6);s1.getAllCourses().add(c1);s2.getAllCourses().add(c1);s6.getAllCourses().add(c1);// 第二門課程有6個人參加,向課程中增加6個學(xué)生信息,同時向?qū)W生中添加課程信息// 向課程中增加學(xué)生信息c2.getAllStudents().add(s1);c2.getAllStudents().add(s2);c2.getAllStudents().add(s3);c2.getAllStudents().add(s4);c2.getAllStudents().add(s5);c2.getAllStudents().add(s6);// 像學(xué)生中增加課程信息s1.getAllCourses().add(c2);s2.getAllCourses().add(c2);s3.getAllCourses().add(c2);s4.getAllCourses().add(c2);s5.getAllCourses().add(c2);s6.getAllCourses().add(c2);// 輸出一門課程的信息,觀察一門課程有多少個學(xué)生參加System.out.println(c1); // 輸出第一門課程Iterator<Student> iter1 = c1.getAllStudents().iterator();// 迭代輸出while (iter1.hasNext()) {Student s = iter1.next();System.out.println("\t" + s);}// 輸出一個學(xué)生參加的課程信息,觀察有多少門課程System.out.println(s6);Iterator<Course> iter2 = s6.getAllCourses().iterator();while (iter2.hasNext()) {// 取得所參加的課程Course c = iter2.next();// 輸出課程信息System.out.println("\t" + c);}} }輸出結(jié)果如下:
課程名稱英語;課程學(xué)分3學(xué)生姓名:張三:年齡20學(xué)生姓名:李四:年齡21學(xué)生姓名:錢八:年齡25 學(xué)生姓名:錢八:年齡25課程名稱英語;課程學(xué)分3課程名稱計(jì)算機(jī);課程學(xué)分5程序采用的是雙向的處理關(guān)系,所以學(xué)生在選擇一個課程時,除了課程中要添加學(xué)生,在學(xué)生中也要添加課程信息。在輸出課程信息時,可以通過課程對象中的集合找到參加此課程的全部學(xué)生信息,也可以通過學(xué)生找到全部參加的課程信息。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的Java多对多关系示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jsoup使用DOM方法来遍历一个文档
- 下一篇: Java 格式化时间