日期:2014-05-20  浏览次数:20697 次

如何删除Map中已经存在的对象
Java code


//Mercha.java


public class Mercha {
    
    private String comname ;//商品名称
    private String comprice ;//商品价格
    private String comnum ; //商品数量
    
    //名称
    
        public void setComname(String comname){
            this.comname=comname;
        }
        
        public String getComname() {
            return comname;
        }
        
        //价格
        
        public void setComprice (String comprice){
            this.comprice=comprice;
        }
        
        public String getComprice (){
            return comprice ;
        }
        
        //商品数量
        
        public void setComnum(String comnum){
            this.comnum=comnum;
        }
        
        public String getComnum(){
            return comnum;
        }

        
        
        

}





Java code


//商品类
//Commodity

static Map<Object, Object> commodity = new HashMap<Object, Object>();// 储存商品

// ////添加数据
        Mercha mer1 = new Mercha();
        mer1.setComname("海尔");
        mer1.setComprice("120.0");
        mer1.setComnum("100");

        // ////数据
        Mercha mer2 = new Mercha();
        mer2.setComname("大中");
        mer2.setComprice("150.0");
        mer2.setComnum("120");

        // /////////数据
        Mercha mer3 = new Mercha();
        mer3.setComname("长虹");
        mer3.setComprice("190.0");
        mer3.setComnum("135");

        commodity.put(mer1, mer1);
        commodity.put(mer2, mer2);
        commodity.put(mer3, mer3);

        // 输出
        do {
            Mercha mer5 = new Mercha();// 用于将处理后的商品信息转交至支付中心的Map<>.
            System.out.println(">>>>>>>>>>>>商品处理中心");

            System.out.println("商品名称" + "\t\t" + "商品数量" + "\t\t" + "商品价格");

            for (Object obj : commodity.keySet()) {
                System.out.println(((Mercha) commodity.get(obj)).getComname()
                        + "\t\t" + ((Mercha) commodity.get(obj)).getComnum()
                        + "\t\t" + ((Mercha) commodity.get(obj)).getComprice());
            }
            //commodity.clear();// 输出之后,清空map<>,防止重复添加
            
                for (Map.Entry<Object, Object> entry : commodity.entrySet()) {

                    // mer5.getComname()
                    commodiname = ((Mercha) entry.getKey()).getComname();// 商品名称
                    commodinum = mer4.getComnum();// 购买的数量<控制台输入>
                    commodiprice = ((Mercha) entry.getValue()).getComprice();// 商品价格
                    // 处理商品数量过程
                    String commodinums = ((Mercha) entry.getValue())
                            .getComnum();// 商品总数量<已定义>
                    commodinums_always = Integer.valueOf(commodinums)
                            .intValue();// 获得商品总数量<String转int>
                    commodinums_buy = Integer.valueOf(commodinum).intValue();// 购买数量<String转换为int>
                    commodinums_results = commodinums_always - commodinums_buy;// 获得已经售出后的商品数量<int>
                    commodinums_resultss = Integer
                            .toString(commodinums_results);// 将int转为String.
                    // 处理数量过程结束
                    if (mer4.getComname().equals(commodiname)
                            && commodinums_buy <= commodinums_always
                            && commodinums_buy > t.Minnum) {// 值比较:查找是否有相应商品,并且数量是否大于所要购买的数量
                        
                        // 用一个对象接收上面的值.然后再将对象传入支付类中的map
                        mer5.setComname(commodiname);// 1.用对象存储名称
                        mer5.setComnum(commodinum);// 2.存储价格
                        mer5.setComprice(commodiprice);// 3.存储购买数量<控制台输入的值>
                        pay.pays.put(mer5, mer5);// 将上述信息放入支付类的map<>.

                        System.out.println("购买成功!");
                        mer6.setComname(commodiname);// 1.用对象存储名称
                        mer6.setComprice(commodiprice);// 2.存储价格
                        mer6.setComnum(commodinums_resultss);// 3.存储数量<已变化>

                        findname = true;// 找到商品,findname为真
                    }
                }