泛型应用之一对多实例

//一个学校存在的是多个学生,这时候指向的泛型是多个学生


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


public class School{
private String name;
private List<Student> allStudents;  //泛型是多个学生
public School(){  //不管学校有没有名字,都有多个学生
this.allStudents=new ArrayList<Student>();
}
public School(String name){
this();  //调用无参构造方法
this.setName(name);
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public List<Student> getAllStudents(){  //得到所有学生
return this.allStudents;
}
public String toString(){
return "学校:"+this.getName();
}

};



public class Student{
private String name;
private int age;
private School school;  //一个学生属于一个学校

public Student(String name,int age){
this.setName(name);
this.setAge(age);
}
public void setSchool(School school){
this.school=school;
}
public School getSchool(){
return this.school;
}
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.getName()+";年龄:"+this.getAge();
}
};

//主方法测试


import java.util.Iterator;


public class TestDemo{
public static void main(String args[]){
School sch=new School("清华大学");  //定义学校
Student s1=new Student("张三",22);     //定义学生
Student s2=new Student("李四",21);
Student s3=new Student("王五",23);

sch.getAllStudents().add(s1);  //一个学校多个学生,增加多个学生
sch.getAllStudents().add(s2);
sch.getAllStudents().add(s3);
 s1.setSchool(sch);            //多个学生,同一个学校
 s2.setSchool(sch);
 s3.setSchool(sch);
 System.out.println(sch);     //输出学校
 //输出学生,肯定使用Iterator标准输出,sch.getAllStudents()返回的是List
 Iterator<Student> iter=sch.getAllStudents().iterator();
 Iterator<Student> iter2=sch.getAllStudents().iterator();


 while(iter.hasNext()){
  System.out.println("\t|-"+iter.next());  //从学校找到学生
 }
 System.out.println("学生信息:");
 while(iter2.hasNext()){
  System.out.println("\t|-"+iter2.next().getSchool().getName());  //从学生找到学校
 }
}
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值