15---接口与类集综合应用

来源:互联网 发布:黑魂3帧数优化补丁3dm 编辑:程序博客网 时间:2024/06/04 18:34
 

List、 Set、 Map
 看一下情况;
  图书大厦里可以放很多种的书:
   儿童类书;
   计算机类书;
   建筑类的书;
  要求实现以下一种功能:
   模拟 图书大厦,图书大厦里可以存放多种书目,而且可以进行添加操作,
   而且可以进行查询,删除操作;

 注意:一个类集合可以放多种类型的对象,但是为了防止操作不慎操作转型错误,我们一般规定
  只放一种类型的;

 图书大厦--》List--》书的接口《--各种书
  import java.util.*;
  interface Book{
   //书的价格、名称、信息
   public float getPrice();
   public String getName();
   public String getInfo();
   }
  class ChildBook implements Book{
   private String name;
   private float price;
   private String info;
   
   public ChildBook(String name,float price,String info){
    this.name=name;
    this.price=price;
    this.info=info;
    }
   public String getName(){
    return this.name;
    }
   public float getPrice(){
    return this.price;
    }
   public String getInfo(){
    return this.info;
    }
   public void setName(String name){
    this.name=name;
    }
   public void setPrice(float price){
    this.price=price;
    }
   public void setInfo(String info){
    this.info=info;
    }
   public String toString(){
    return "儿童书名:"+this.name+"价格:"+this.price+"信息:"+this.info;
    }
   } 

  class ComputerBook implements Book{
   private String name;
   private float price;
   private String info;
   
   public ComputerBook(String name,float price,String info){
    this.name=name;
    this.price=price;
    this.info=info;
    }
   public String getName(){
    return this.name;
    }
   public float getPrice(){
    return this.price;
    }
   public String getInfo(){
    return this.info;
    }
   public void setName(String name){
    this.name=name;
    }
   public void setPrice(float price){
    this.price=price;
    }
   public void setInfo(String info){
    this.info=info;
    }
   public String toString(){
    return "计算机书名:"+this.name+"价格:"+this.price+"信息:"+this.info;
    }
   } 
   
  class BookShop{
   private String name;
   //一个书店包含很多书
   private List<Book> allBooks;
   public BookShop(){
    this.allBooks=new ArrayList();
    }
   public BookShop(String name){
    this();
    this.name=name;
    }
   public void setName(String name){
    this.name=name;
    }
   public String getName(){
    return this.name;
    }
   //增加书
   public void append(Book book){
    this.allBooks.add(book);
    }
   //得到全部书
   public List<Book> getAllBooks(){
    return this.allBooks;
    }
   //删除书
   public void delete(Book book){
    this.allBooks.remove(book);
    }
   //根据书的名字去找到一本书
   public Book findByName(String name){
    //从已有的数据中进行一次查询
    Book book=null;
    Iterator iter=this.allBooks.iterator();
    while(iter.hasNext()){
     //进行一次的比较
     Book temp=(Book)iter.next();
     if(name.equals(temp.getName())){
      //如果名字相等,则表示找到了
      book=temp;
      break;
      }
     }
    return book;
    }
   //书的检索,书的模糊查询
   public List<Book> index(String keyWord){
    List list=new ArrayList();
    Iterator iter=this.allBooks.iterator();
    while(iter.hasNext()){
     Book b=(Book)iter.next();
     if(b.getName().indexOf(keyWord)!=-1){
      list.add(b);
      }
     }  
    return list;
    }
   }
   
  public class Demo{
   public static void main(String args[]){
    Book b1=new ChildBook("大灰狼的故事",10.0f,"一个大坏蛋");
    Book b2=new ChildBook("十万个为什么",20.0f,"为什么");
    Book b3=new ChildBook("喜洋洋",10.0f,"善良的小羊");
    Book b4=new ComputerBook("Java",60.0f,"java基础");
    Book b5=new ComputerBook("C++",50,"C++基础");
    
    BookShop bs=new BookShop("网上书店");
    bs.append(b1);
    bs.append(b2);
    bs.append(b3);
    bs.append(b4);
    bs.append(b5);
    
    print(bs.getAllBooks());
    
    print(bs.index("A"));
    //假设将C++这本书从书店中删除
    Book b=bs.findByName("C++");
    if(b!=null){
     bs.delete(b);
     }
    System.out.println("========================");
    print(bs.getAllBooks());
    
    }
   public static void print(List all){
    Iterator iter=all.iterator();
    while(iter.hasNext()){
     Book b=(Book)iter.next();
     System.out.println(b);
     }
    }
   }

原创粉丝点击