zoukankan      html  css  js  c++  java
  • java链表的基本使用 (购物车)代码

    package test;
     interface ILink<E>{
         public void add(E e);//添加链表数据
         public int size();//返回链表长度
         public boolean isEmpty();//判断链表是否为空
         public Object [] toArray();//返回集合数据
         public E get(int index);//返回指定索引的数据
         public void set(int index,E data);//修改值
         public boolean contains(E data);//判断指定数据是否存在
         public void remove(E data);//删除指定数据
         public void clean();//清空
     }
     class LinkImpl<E> implements ILink<E>{
         private class Node{//保存节点的数据关系
             private E data;
             private Node next;//保存下一个引用
             private Node(E data) {
                 this.data=data;
             }
             //第一次调用
             public void addNode(Node newNode) {
                 //保存新的Node数据
                if(this.next==null) {
                    this.next =newNode;
                }else {
                    this.next.addNode(newNode);
                }
             }
             public void toArrayNode() {
                 LinkImpl.this.returnData [LinkImpl.this.foot ++]=this.data;
             if(this.next!=null) {
                 this.next.toArrayNode();
             }
             }
             public E getNode(int index) {
                 if(LinkImpl.this.foot ++ ==index) {
                     return this.data;        
                 }
                 else {
                    return this.next.getNode(index);        
                 }
             }
             public void setNode(int index,E data) {
                 if(LinkImpl.this.foot ++ ==index) {
                       this.data=data;
                    
                 }
                 else {
                      this.next.getNode(index);
                
                 }
             }
        public boolean containsNode(E data) {
            if(this.data.equals(data)) {
                return true;
            }
            else{
                  if(this.next==null) {
                      return false;
                  }else {
                      
                     return this.next.containsNode(data);
                  }
              }
        }
        public void removeNode(Node previous,E data) {
            if(this.data.equals(data)) {
                previous.next=this.next;
            }else {
                if(this.next!=null) {
                    this.next.removeNode(this, data);
                }
            }
        }    
            
            
         }
         private Node root;
         private int count;//增加数据
         private int foot;
         private Object[] returnData;
        public void add(E e) {
             if(e==null) { return ;
             }else {
                 Node newNode = new Node(e);//创建新节点
                 if(this.root==null) {
                     this.root=newNode;
                 }
                 else {
                     this.root.addNode(newNode);
                 }        
                 this.count++;
             }
         }
        @Override
        public int size() {
            // TODO Auto-generated method stub
            return this.count;
        }
        @Override
        public boolean isEmpty() {
             //this.count==0
            return this.root==null;
        }
        @Override
        public Object[] toArray() {
             if(this.isEmpty()) {
                 return null;
             }
             this.foot=0;
             this.returnData=new Object[this.count];
             this.root.toArrayNode();
             return this.returnData;
        
        }
        @Override
        public E get(int index) {
         if(index>this.count) {
             return null;
         }
         this.foot=0;
        return this.root.getNode(index);
        }
        @Override
        public void set(int index, E data) {
             if(index>=this.count) {
                 return ;
             }
             this.foot=0;
             this.root.setNode(index, data);
            
        }
        @Override
        public boolean contains(E data) {
             if(data==null) {
                 return false;
             }
            return this.root.containsNode(data);
        }
        @Override
        public void remove(E data) {
         if(this.contains(data)) {
             if(this.root.data==data) {
                 this.root=this.root.next;
             }else {
                 this.root.next.removeNode(this.root, data);
             }
             this.count--;
         }
            
        }
        @Override
        public void clean() {
            this.root=null;
            this.count=0;
            
        }
     }
      interface IGoods{//商品标准
        public String getName();  
        public double getPrice();
      }
      interface IShopCar{//购物车的标准
          public void add(IGoods goods);//添加商品信息
          public void delete(IGoods goods);//删除商品
          public Object[] getAll();//获得购物车中的全部商品信息
      }
      class shopCarImpl implements IShopCar{
          private ILink<IGoods> allGoodses =new LinkImpl<IGoods>();

        @Override
        public void add(IGoods goods) {
             this.allGoodses.add(goods);
            
        }

        @Override
        public void delete(IGoods goods) {
             this.allGoodses.remove(goods);
            
        }

        @Override
        public Object[] getAll() {
            // TODO Auto-generated method stub
            return this.allGoodses.toArray();
        }
          
      }
      class Cashier{//收银台
          public IShopCar shopcar;
          public Cashier(IShopCar shopcar) {
              this.shopcar=shopcar;
          }
          public double allPrice() {//计算总价
              double sum=0.0;
            Object[] all = this.shopcar.getAll();
            for(Object obj:all) {
                IGoods goods=(IGoods)obj;
                sum+=goods.getPrice();
            }
            return sum;
            
          }
          public int allCount() {
              return this.shopcar.getAll().length;
          }
          
      }
        class Book implements IGoods{
            private String name;
            private double price;
            public Book(String name,double price) {
                this.name=name;
                this.price=price;
            }
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            public double getPrice() {
                return price;
            }
            public void setPrice(double price) {
                this.price = price;
            }
            public boolean equals(Object obj) {
                if(obj==null) {
                    return false;
                }
                if(this==obj) {
                    return true;
                }
                if(!(obj instanceof Book)) {
                    return false;
                }
                Book book=(Book)obj;
                return this.name.equals(book.name)&&
                        this.price==book.price;
                
            }
            public String toString() {
                return "【图书信息】:name="+this.name
                        +"price="+this.price;
            }
        }
     
        class Bag implements IGoods{
            private String name;
            private double price;
            public Bag(String name,double price) {
                this.name=name;
                this.price=price;
            }
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            public double getPrice() {
                return price;
            }
            public void setPrice(double price) {
                this.price = price;
            }
            public boolean equals(Object obj) {
                if(obj==null) {
                    return false;
                }
                if(this==obj) {
                    return true;
                }
                if(!(obj instanceof Book)) {
                    return false;
                }
                Bag bag=(Bag)obj;
                return this.name.equals(bag.name)&&
                        this.price==bag.price;
                
            }
            public String toString() {
                return "【背包信息】:name="+this.name
                        +"price="+this.price;
            }
        }
        
    public class Test1 {
         public static void main(String[] args) throws Exception {
         IShopCar car = new shopCarImpl();
           car.add(new Book("java开发", 40));
           car.add(new Book("Oracle",24));
           car.add(new Bag("小熊背包", 88));
            Cashier cashier = new Cashier(car);
            System.out.println(cashier.allPrice());
            
        }
     
    }

      

  • 相关阅读:
    解决 找不到方法:“Void System.Web.UI.HtmlControls.HtmlForm.set_Action(System.String)”。
    如何衡量CMS系统的好坏
    创业与团队管理的一些观点
    Windows下Memcached的安装与配置
    SQL Server 2005备份维护计划
    写给四岁的领智
    python在接口测试的实际应用
    篇2 安卓app自动化测试初识python调用appium
    篇5 python自动化测试应用Selenium环境篇
    篇1 安卓app自动化测试appium环境篇
  • 原文地址:https://www.cnblogs.com/yxj808/p/12644306.html
Copyright © 2011-2022 走看看