java多对多关系实例_java实例,java多对多关系示例

之前给大家分享了java一对多关系示例,那么下面要给大家分享的就是java多对多关系示例,一起来看看吧。

使用集合不仅仅能够表示一对一的关系,也能够表示多对多的关系,例:一个学生可以选多门课程,一门课程可以有多个学生参加,这个的话,就是一个非常典型的多对多关系。

想要完成上面的要求的话,那么首先就应该定义两个类,学生信息(Student)类、课程信息(Course)类。

在学生类中存在一个集合,保存全部的课程,同样的话,在课程类中也要存在一个集合,保存全部的学生。

1、定义学生类(在学生类当中,存在一个allCourses 的

List集合,这样的话,在程序运行的时候,一个学生类当中能够保存多个Course对象)。public class Student

{

private String name;

private int age;

private List  allCourses; // 定义集合保存全部课程

private Student()

{

this.allCourses = new ArrayList  (); // 实例化List集合

}

// 通过构造方法设置内容

public Student(String name, int age)

{

// 调用无参构造

this();

this.setName(name);

this.setAge(age);

}

public String getName()

{

return name;

}

public void setName(String name)

{

this.name = name;

}

public int getAge()

{

return age;

}

public void setAge(int age)

{

this.age = age;

}

public List  getAllCourses()

{

return allCourses;

}

public void setAllCourses(List  allCourses)

{

this.allCourses = allCourses;

}

// 重写toString()方法

public String toString()

{

return "学生姓名:" + this.name + ":年龄" + this.age;

}

}

2、定义课程类(课程类和学生类相同,都定义了一个List集合,用来保存多个学生信息)。public class Course

{

private String name;

private int credit;

// 定义集合保存多个学生

private List  allStudents;

private Course()

{

// 实例化List集合

this.allStudents = new ArrayList  ();

}

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  getAllStudents()

{

return allStudents;

}

public void setAllStudents(List  allStudents)

{

this.allStudents = allStudents;

}

// 重写toString()方法

public String toString()

{

return "课程名称" + this.name + ";课程学分" + this.credit;

}

}

3、测试程序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("钱八", 25);

// 第一门课程有3个人参加,向课程中增加3个学生信息,同时向学生中增加课程信息

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个学生信息,同时向学生中添加课程信息

// 向课程中增加学生信息

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  iter1 = c1.getAllStudents()

.iterator();

// 迭代输出

while (iter1.hasNext())

{

Student s = iter1.next();

System.out.println("\t" + s);

}

// 输出一个学生参加的课程信息,观察有多少门课程

System.out.println(s6);

Iterator  iter2 = s6.getAllCourses()

.iterator();

while (iter2.hasNext())

{

// 取得所参加的课程

Course c = iter2.next();

// 输出课程信息

System.out.println("\t" + c);

}

}

}

输出结果:

3f245ffda31bdd59b95e5a365c5988e9.png

从程序上面来看的话,设计关系的地方比较的复杂,因为现在的程序采用的是双向的处理关系,所以学生在选择一个课程时,除了课程中要添加学生,在学生中也要添加课程信息,在输出课程信息的时候,能够通过课程对象中的集合找到参加此课程的全部学生信息,也能够通过学生找到全部参加的课程信息。

更多java程序代码例子,可以继续关注奇Q工具网来进行了解呢。

推荐阅读:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值