黑马程序员技术交流社区
标题:
Java类集 范例讲解——多对多关系
[打印本页]
作者:
小歪
时间:
2014-4-1 10:46
标题:
Java类集 范例讲解——多对多关系
Java类集 范例讲解——多对多关系
实例要求:
一个学生可以选多门课程,一门课程可以有多名学生参加那么这就是一个典型的多对多关系;
要完成本程序,首先应该定义两个类 学生信息类(Student)、课程信息类(Course),在学生类中存在一个集合,保存所参加的
所有课程,同理课程类中也需要一个集合,保存参加此课程的学生。
本实例所用到知识:
1、List集合运用
2、引用传递
3、Iterator输出运用
学生信息类:
import java.util.ArrayList;
import java.util.List;
public class Student {
private String name;
private int age;
private List<Course> allcou=null;
public Student()
{
allcou=new ArrayList<Course>();
}
public Student(String name,int age)
{
this();
this.name=name;
this.age=age;
}
public List<Course> getAllcou()
{
return this.allcou;
}
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> allstu=null;
public Course(){
allstu=new ArrayList<Student>();
}
public Course(String name,int credit){
this();
this.name=name;
this.credit=credit;
}
public List<Student> getAllstu(){
return this.allstu;
}
public void setName(String name){
this.name=name;
}
public void setCredit(int credit){
this.credit=credit;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.credit;
}
public String toString(){
return "课程名称:"+this.name+",学分:"+this.credit;
}
}
复制代码
测试运行:
import java.util.Iterator;
public class Main {
public static void main(String args[]){
Course c1=new Course("《Java程序设计》",10);
Course c2=new Course("《数据结构》",15);
Student s1=new Student("张三",19);
Student s2=new Student("李四",20);
Student s3=new Student("王五",21);
Student s4=new Student("赵六",22);
Student s5=new Student("孙七",23);
//设置关系:第一门课程有3人参加
c1.getAllstu().add(s1);
c1.getAllstu().add(s2);
c1.getAllstu().add(s3);
s1.getAllcou().add(c1);
s2.getAllcou().add(c1);
s3.getAllcou().add(c1);
//设置关系:第二门课程所有人都参加
c2.getAllstu().add(s1);
c2.getAllstu().add(s2);
c2.getAllstu().add(s3);
c2.getAllstu().add(s4);
c2.getAllstu().add(s5);
s1.getAllcou().add(c2);
s2.getAllcou().add(c2);
s3.getAllcou().add(c2);
s4.getAllcou().add(c2);
s5.getAllcou().add(c2);
//输出每门课程 以及参加人数
System.out.println("\n"+c1+":"+"(共"+c1.getAllstu().size()+"人)");
Iterator<Student> iter1=c1.getAllstu().iterator();
while(iter1.hasNext()){
System.out.println("————|"+iter1.next());
}
//课程1
System.out.println("\n"+c2+":"+"(共"+c2.getAllstu().size()+"人)");
Iterator<Student> iter2=c2.getAllstu().iterator();
while(iter2.hasNext()){
System.out.println("————|"+iter2.next());
}
//课程2
//通过学生找到课程,举例通过 张三(s1)找到他所参加的课程
System.out.println("\n"+s1+":(共参加"+s1.getAllcou().size()+"门课程)");
Iterator<Course> iter3=s1.getAllcou().iterator();
while(iter3.hasNext()){
System.out.println("————|"+iter3.next());
}
}
}
复制代码
运行结果:
1.png
(141.6 KB, 下载次数: 29)
下载附件
2014-4-1 10:46 上传
作者:
黄晓鑫
时间:
2014-4-1 10:55
哥们不错是不错,但不是最好,没有最好,只有更好。嘻嘻
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2