类集中一对多的关系 、多对多的关系

一对多:

student类中包含一个school属性,表示一个学生属于一个学校:

package collections;

public class Student {                        //定义Student类
    private String name;                      //定义name属性
    private int age;                          //定义age属性
    private School school;                    //一个学生属于一个学校
    
    public Student(String name,int age){      //通过构造设置内容
        this.setName(name);                   //设置name属性内容
        this.setAge(age);                     //设置age属性内容
    }
    
    public String getName(){                  //返回name属性内容
        return name;
    }
    public void setName(String name){         //设置name属性内容
        this.name=name;
    }
    
    public int getAge(){                      //返回age属性内容
        return age;
    }
    public void setAge(int age){               //设置age属性内容
        this.age=age;
    }
    
    public School getSchool(){                //返回所在学校
        return school;
    }
    public void setShool(School school){       //设置所在学校
        this.school=school;
    }
    
    public String toString(){                  //覆写toString()方法
        return "学生姓名:"+this.name+"学生年龄:"+this.age;
    }

}

package collections;

import java.util.ArrayList;
import java.util.List;
 
public class School {                                   //定义school类
    private String name;                                //定义name属性
    private List<Student> allStudents;                  //一个学校有多个学生
    
    public School(){                                    //无参构造
        this.allStudents= new ArrayList<Student>();     //实例化参数
    }
    public School(String name){                            //通过构造设置name属性
        this();                                            //无参构造
        this.setName(name);                                //设置name属性内容
    }
    
    public String getName() {                            //返回name属性
        return name;
    }
    public void setName(String name) {                    //设置name属性
        this.name = name;
    }
    
    public List<Student> getallStudents(){                //设置所在学校
        return allStudents;
    }
    public String toString(){                            //覆写toString()方法
        return "学校名称:"+this.name;
    }

}
package collections;

import java.util.Iterator;

public class TestDemo {
    public static void main(String[] args) {
        School sch = new School("清华大学");
        Student s1 = new Student("YQ",20);
        Student s2 = new Student("GG",22);
        Student s3 = new Student("EE",21);
        sch.getallStudents().add(s1);                //学校中加入学生
        sch.getallStudents().add(s2);
        sch.getallStudents().add(s3);
        s1.setShool(sch);
        s2.setShool(sch);
        s3.setShool(sch);
        System.out.println(sch);                    //输出学校信息
        Iterator<Student> iter = sch.getallStudents().iterator();
        while(iter.hasNext()){
            System.out.println(iter.next()+",");
        }
    }

}
学校名称:清华大学
学生姓名:YQ学生年龄:20,
学生姓名:GG学生年龄:22,
学生姓名:EE学生年龄:21,

多对多:

在学生类中定义一个allCourse的List集合,这样在程序运行时,一个Student类中可以保存多个Course对象

package test;

import java.util.ArrayList;
import java.util.List;

public class Students {
    private String name;
    private int age;
    private List<Course> allCourse;
    
    public Students(){
        this.allCourse = new ArrayList<Course>();
    }
    public Students(String name,int age){
        this();
        this.setName(name);
        this.setAge(age);
    }
    
    public void setName(String name){
        this.name=name;
    }
    public String getName(){
        return this.name;
    }
    
    public void setAge(int age){
        this.age=age;
    }
    public int getAge(){
        return this.age;
    }
    
    public List<Course> getAllCourse(){
        return this.allCourse;
    }
    public void setAllCourse(List<Course> allCourse){
        this.allCourse=allCourse;
    }
    
    public String toString(){
        return "学生姓名:"+this.name+"学生年龄:"+this.age;
        
    }
    

}

在Course类中与Student类一样,都定义一个List集合,用于保存多个学生信息

package test;

import java.util.ArrayList;
import java.util.List;

public class Course {
    private String name;
    private int credit;
    private List<Students> allStudents;
    
    public Course(){
        this.allStudents = new ArrayList<Students>();
    }
    public Course(String name,int credit){
        this();
        this.setName(name);
        this.setCredit(credit);
    }
    
    public void setName(String name){
        this.name=name;
    }
    public String getName(){
        return this.name;
    }
    
    public void setCredit(int credit){
        this.credit=credit;
    }
    public int getCredit(){
        return this.credit;
    }
    
    public void setAllStudents(List<Students> allStudents){
        this.allStudents=allStudents;
    }
    public List<Students> getAllStudents(){
        return this.allStudents;
    }
    
    public String toString(){
        return "课程名称:"+this.name+"课程学分:"+this.credit;
    }

}

 

package test;

import java.util.Iterator;

public class TestDemo02 {
    public static void main(String[] args) {
        Course c1 = new Course("英语", 2);
        Course c2 = new Course("计算机", 3);
        Students s1 = new Students("YQ", 20);
        Students s2 = new Students("QQ", 21);
        Students s3 = new Students("WW", 25);
        Students s4 = new Students("RR", 23);
        Students s5 = new Students("FF", 26);
        Students s6 = new Students("GG", 22);
        
        c1.getAllStudents().add(s1);//向课程中添加学生信息
        c1.getAllStudents().add(s2);
        c1.getAllStudents().add(s3);
        s1.getAllCourse().add(c1);  //向学生中增加课程信息
        s2.getAllCourse().add(c1);
        s3.getAllCourse().add(c1);
        s4.getAllCourse().add(c1);
        s5.getAllCourse().add(c1);
        s6.getAllCourse().add(c1);
        
        
        c2.getAllStudents().add(s4);//向课程中添加学生信息
        c2.getAllStudents().add(s5);
        c2.getAllStudents().add(s6);
        s1.getAllCourse().add(c2);  //向学生中增加课程信息
        s2.getAllCourse().add(c2);
        s3.getAllCourse().add(c2);
        s4.getAllCourse().add(c2);  //向学生中增加课程信息
        s5.getAllCourse().add(c2);
        s6.getAllCourse().add(c2);
        
        System.out.println(c1);
        Iterator<Students> iter = c1.getAllStudents().iterator();
        while(iter.hasNext()){
            System.out.println(iter.next());
        }
        
        System.out.println("\n"+s4);
        Iterator<Course> iter2 = s3.getAllCourse().iterator();
        while(iter2.hasNext()){
            System.out.println(iter2.next());
        }
    }

}

 

课程名称:英语课程学分:2
学生姓名:YQ学生年龄:20
学生姓名:QQ学生年龄:21
学生姓名:WW学生年龄:25

学生姓名:RR学生年龄:23
课程名称:英语课程学分:2
课程名称:计算机课程学分:3

 

认真看过此篇的小伙伴,如果对你有收获,请点击旁边的小手推荐一下,如果有误,欢迎指正,谢谢!

版权声明:此篇为本人原创,转载请标明出处https://www.cnblogs.com/YQian/p/10880552.html

我的博客园地址:https://www.cnblogs.com/YQian/

posted @ 2019-05-17 11:48  雨如烟  阅读(630)  评论(5)    收藏  举报