类集中一对多的关系 、多对多的关系
一对多:
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/

浙公网安备 33010602011771号