现在的位置: 首页 > 综合 > 正文

14—类集应用

2013年10月09日 ⁄ 综合 ⁄ 共 4421字 ⁄ 字号 评论关闭

 类集的应用:
 例如:以下一种关系:
  一个人拥有多个Email地址;
 分析:
  完成此功能需要多少类:
  人--->类
  Email--->类
 多个email怎么体现?
  在Person类中加入一个存放Email对象的集合;
  import java.util.*;
  class Person{
   private String name;
   private int age;
   private List<Email> allEmails;
   
   public Person(String name,int age){
    this.allEmails=new ArrayList();
    this.name=name;
    this.age=age;
    }
   public void setName(String name){
    this.name=name;
    }
   public void setAge(int age){
    this.age=age;
    }
   public void setAllEmails(List<Email> allEmails){
    this.allEmails=allEmails;
    }
   public String getName(){
    return this.name;
    }
   public int getAge(){
    return this.age;
    }
   public List<Email> getAllEmails(){
    return this.allEmails;
    }
   public String toString(){
    return "姓名:"+this.name+",年龄:"+this.age;
    }
   }
   
  class Email{
   private String url;
   private String userName;
   private String flag;
   
   public Email(String url,String userName,String flag){
    this.url=url;
    this.userName=userName;
    this.flag=flag;
    }
   public void setUrl(String url){
    this.url=url;
    }
   public void setUserName(String userName){
    this.userName=userName;
    }
   public void setFlag(String flag){
    this.flag=flag;
    }
   public String getUrl(){
    return this.url;
    }
   public String getUserName(){
    return this.userName;
    }
   public String getFlag(){
    return this.flag;
    }
   public String toString(){
    return "网站:"+this.url+",email名称:"+this.userName+this.flag;
    }
   }
   
  public class Demo{
   public static void main(String args[]){
    Person p=new Person("lid",20);
    Email e1=new Email("
www.163.com","lid1","@163");
    Email e2=new Email("
www.163.com","lid2","@163");
    Email e3=new Email("
www.163.com","lid3","@163");
    
    p.getAllEmails().add(e1);
    p.getAllEmails().add(e2);
    p.getAllEmails().add(e3);
    
    //一个人拥有3个emails地址
    //通过输出体现
    List<Email> all=p.getAllEmails();
    Iterator iter=all.iterator();
    while(iter.hasNext()){
     Email e=(Email)iter.next();
     System.out.println(e);
     }
    }
   }
 一对多的关系:一个人拥有多个email地址,是数据库中的一对多
 多对多的关系:
  一个学生可以选多门课程,一个课程可同时被多名学生选择;
   import java.util.*;
   class Student{
    private String name;
    private List<Subjects> allSubjects;
    
    public Student(){
     this.allSubjects=new ArrayList();
     }
    public Student(String name){
     this();
     this.setName(name);
     }
    public void setName(String name){
     this.name=name;
     }
    public String getName(){
     return this.name;
     }
    public List<Subjects> getAllSubjects(){
     return this.allSubjects;
     }
    public String toString(){
     return  "学生姓名:"+this.name;
     }
    }
   class Subjects{
    private String name;
    private List<Student> allStudent;
    public Subjects(){
     this.allStudent=new ArrayList();
     }
    public Subjects(String name){
     this();
     this.setName(name);
     }
    public void setName(String name){
     this.name=name;
     }
    public String getName(){
     return this.name;
     }
    public List<Student> getAllStudent(){
     return this.allStudent;
     }
    public String toString(){
     return "课程:"+this.name;
     }
    }
    
   public class Demo{
    
    //打印该学生选的所有课程
    public static void print(Student s){
     System.out.println("*"+s+":的课程信息---");
     Iterator iter=s.getAllSubjects().iterator();
     while(iter.hasNext()){
      System.out.println(" |-"+iter.next());
      }
     }
    //打印选择该课程的所有学生
    public static void print(Subjects s){
    System.out.println("*"+s+":的学生信息---");
    Iterator iter=s.getAllStudent().iterator();
    while(iter.hasNext()){
     System.out.println(" |-"+iter.next());
     }
    }
    public static void main(String args[]){
      Student s1=new Student("张三");
      Student s2=new Student("李四");
      Student s3=new Student("王五");
      Student s4=new Student("赵六");
      Student s5=new Student("孙七");
      
      Subjects su1=new Subjects("C++");
      Subjects su2=new Subjects("JAVA");
      Subjects su3=new Subjects("ANDRIOD");
      
      //一门课程被多门学生选
      su1.getAllStudent().add(s1);
      su1.getAllStudent().add(s2);
      su1.getAllStudent().add(s3); 
      su2.getAllStudent().add(s2);
      su2.getAllStudent().add(s4);
      su3.getAllStudent().add(s5);
      
      //一个学生选择多门课程
      s1.getAllSubjects().add(su1);
      s2.getAllSubjects().add(su1);
      s2.getAllSubjects().add(su2);
      s3.getAllSubjects().add(su1);
      s4.getAllSubjects().add(su2);
      s5.getAllSubjects().add(su3);
      print(s1);
      print(s2);
      print(s3);
      print(s4);
      print(s5);
      System.out.println("===================================");
      print(su1);
      print(su2);
      print(su3);
     }
   }

抱歉!评论已关闭.