java重要类

文章讲述了在Java开发中,如何使用ArrayList和HashMap实现商城系统的商品管理功能,包括增删改查操作,以及如何利用接口和javabean设计模式来组织代码。重点介绍了如何利用商品编号进行去重和高效的数据操作。
摘要由CSDN通过智能技术生成
  1. Java重要类String ArrayList集合商城系统:(登陆:商家,买家)前台:用户操作界面(商品模块--订单模块--购物车模块-支付模块)后台:商品管理(上传商品,删除商品-上架,秒杀,打折售卖价格,提供丰富的查询)订单管理支付管理)ArrayList或者HashMap做商品管理后台后台功能:增删改查(内功)考虑思路:采用开发方式:面向接口开发方式定义接口---抽象类--类--主程序商品管理:商品增删改查接口:商品管理接口(管理商品类-只是有getter或者是setter的方法类,这个特殊类java bean)方法:add_goods增加商品商品的各种名称(商品编号,商品价格,商品名称,商品分类,商家名称)用户输入:商品名称有一个商品名称商品名称--手机名称(有意义的说明)---值(说明的情况)凡是有名称和值对应关系,这种考虑key-value(键---值)

  2. 达到这种对应关系,类型--HashMap类型。或者类(属性,方法)-类属性--值,把属性封装,封装后私有化,某些属性可以getter,setter一定商品类(不需要接口)方法就是getter setter,不需要其他方法去做商品类,这个类描述商品。需要商家输入上架商品的内容,这里获取内容,必然有参数,参数就是商品类。del_goods删除商品(提供便利的删除,批量删除)传入商品的编号(id)单个商品的删除update_goods修改商品虽然用户输入的商品编号,用户一次性修改所有的项,传入的内容即有编号,也有各种修改内容,(商品类)根据商品编号,修改商品相关名称,修改价格查(有不同的条件)按照商品名称search_name用户选择一个名称,需要参数多个商品,不需要去重.按照价格search_price用户选择区间,需要两个参数查询所有search_all不需要传参按编号查search_no一个商品经过初步分析(1)建接口文件—》商品管理文件(增删改查)(2)建立类文件-商品类(封装属性的java bean)

  3. (3)商品管理操作就是增删改查,实质是产生变化的商品内容,单纯的数组操作麻烦,数组是定长,使用列表ArrayList,如果店家上传了商品,重复的商品,至少商品的编号是不能重复的,只有商品名称,商品价格,商品类中不能重复的是商品编号,商品编号唯一表征商品的.ArrayList是不可以去重的,这里的去重只能按照商品编号去重,不能把对象放在一起去重。(思路:把商品按商品编号去重,不能按商品的全部信息去重,保证编号和商品对应,这里有两个对应关系:编号---对应--商品,解决对应关系,key就是编号,value就是商品,HashMap的key自动去重)如果可以用数组解决,不要考虑if(4)ArrayList在商品管理类中,添加后根据商品编号去重,建立HashMap,去重后把商品放在ArrayList中。整个商品管理交给HashMap管理,保证每个商品都可以按编号去重,还可以把多个商品组织起来,最后查询的结果可以放在ArrayList中.(5)删除直接按商品id删除即可ArrayList删除,商品id对应的索引,再删除。不但要管理ArrayList,还要管理HashMap,HashMap删 除remove按key来 删 ,ArrayList中的remove按索引来删,最好的方法把key

  4. 和索引联系起来。删除起来效率高。也不把key直接命名0,在key命名最后一位就是索引。(注意:HashMap的remove和ArrayList的remove方法参数不同,如何协调)(6)更新操作按照key找这个元素,直接修改,做删除把key找到索引,用户输入key,就知道索引,修改内容只要调用索引。不需要遍历。(7)查询:按商品名称,遍历商品名称是否有内容。HashMap{名称:商品},名称去重,这里遍历没有去重.Get(“名称”) -商品(8)查询:按商品价格,遍历商品价格,符合条件列出.。查询:按唯一内容查,都可以HashMap中的key这里只有一个商品管理,每个逻辑都必须实现,这里暂不加入抽象类,如果多个模块整合,很有可能抽象类.开发过程中,结合调试主类进行方法的开发.先开发添加商品,添加商品后显示所有商品.整个商品管理交给HashMap管理,保证每个商品都可以按编号去重,还可以把多个商品组织起来,最后查询的结果可以放在ArrayList中.add_goods

  5. 代码如下:

    import java.util.*;

    public class GoodsManagerImpl implements GoodsManager{

        //设置一个总管家,HashMap,满足封装,需要私有,Map类型需要键(key) 就是no,是String,value是对象,是Goods

        private Map<String,Goods> goods_list=new HashMap<>();

        //根据字符串源码中的处理方法,一个char[]定义一个size,到底有多个数。

        private  int size=0;

        //最开始完成,添加一个商品,注意里面goods是执行过程中用户输入的,这里的goods就不需要传参

        @Override

        public void add_goods() {

            //需要输入商品的名称,商品的价格,店铺的名称,商品的分类

            Scanner scanner=new Scanner(System.in);

            //接收商品名称

            System.out.println("请输入添加商品的名称");

            String name=scanner.next();

            //接收商品的价格

            System.out.println("请输入添加商品的价格");

            //初始化没有定义的价格

            double price=9999;

            try {

                price = scanner.nextDouble();

            }catch(Exception e){

            }

            //接收商品的商家

            System.out.println("商家名称");

            String shop=scanner.next();

            //接收商品的分类

            System.out.println("商品的分类");

            String type=scanner.next();

            //产生一个no,no让系统随机产生,产生后加上一个索引size,理解当前商品的索引值

            //UUID,一串随机,随机类型是UUID类型,如果用+号,在这里有一个StringBuilder对象,只有一个size,这里使用concat,

            String no=UUID.randomUUID().toString().concat(size+"");

            //初始化,商品参数结束,直接实例化

            Goods goods=new Goods(no,name,price,shop,type);

            //放在HashMap中就已经去重

            goods_list.put(no,goods);

            size++;

        }

        @Override

        public void del_goods(String no) {

            goods_list.remove(no);

        }

        @Override

        public void update_goods() {

            Scanner scanner = new Scanner(System.in);

            System.out.println("请输入修改商品的商品编号:");

            //需要用户输入编号

            String no=scanner.next();

            //必须按商品的编号,告诉商品原来名称,需要改成,先把商品取出

            Goods goods=goods_list.get(no);

            //要求输入需要修改的商品名称内容

            System.out.println("商品名称的原来内容:");

            System.out.println(goods.getName());

            //输出需要修改的商品名称内容

            System.out.println("请输入修改后的名称");

            String name=scanner.next();

            // 要求输入需要修改的商品价格内容

            System.out.println("商品名称的原来价格:");

            System.out.println(goods.getPrice());

            //输出需要修改的商品价格

            System.out.println("请输入修改后的价格");

            double price=goods.getPrice();

            try{

               price=scanner.nextDouble();

            }catch(Exception e){

            }

            // 要求输入需要修改的商品店铺名称内容

            System.out.println("商品名称的店铺名称:");

            System.out.println(goods.getShop());

            //输出需要修改的商品店铺名称

            System.out.println("请输入修改后的店铺名称");

            String shop=scanner.next();

            // 要求输入需要修改的商品类别内容

            System.out.println("商品名称的商品类别:");

            System.out.println(goods.getType());

            //输出需要修改的商品类别

            System.out.println("请输入修改后的商品类别");

            String type=scanner.next();

            //修改商品的属性值,可以利用HashMap中key值覆盖的道理,产生一个新的商品

            goods=new Goods(goods.getNo(),name,price,shop,type);

            goods_list.put(goods.getNo(),goods);

        }

        @Override

        public Goods findByNo(String no) {

            return goods_list.get(no);

        }

        @Override

        public Collection<Goods> findAll() {

            //显示所有,就是遍历HashMap,遍历HashMap中的值就可以,不需要遍历key,因为key的目的是去重

            //直接使用values显示所有的值

            return goods_list.values();

        }

        @Override

        public List<Goods> findByName(String name) {

            //构造结果

            List<Goods> myresult=new ArrayList<>();

            Collection<Goods> mygoods=goods_list.values();

            //这里迭代器写

            Iterator<Goods> myiter=mygoods.iterator();

            while(myiter.hasNext()){

                Goods goods=myiter.next();

                if(goods.getName().indexOf(name)>-1){

                    myresult.add(goods);

                }

            }

            return myresult;

        }

        @Override

        public List<Goods> findByPrice(double start, double end) {

            //构造结果

            List<Goods> myresult=new ArrayList<>();

            Collection<Goods> mygoods=goods_list.values();

            //这里迭代器写

            Iterator<Goods> myiter=mygoods.iterator();

            while(myiter.hasNext()){

                Goods goods=myiter.next();

                if(goods.getPrice()>=start && goods.getPrice()<=end){

                    myresult.add(goods);

                }

            }

            return myresult;

        }

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值