问答详情
源自:2-8 测试购物车类

小弟问一下,为何我添加了i3把i1覆盖了?

public static void main(String[] args) {
		Items i1=new Items(1,"沃特篮球鞋","温州",200,500,"001.jpg");
		Items i2=new Items(2,"李宁运动鞋","温州",300,500,"002.jpg");
		Items i3=new Items(1,"沃特篮球鞋","温州",200,500,"001.jpg");
		Cart c=new Cart();
		c.addGoodsInCart(i1, 1);
		c.addGoodsInCart(i2, 2);
		c.addGoodsInCart(i3, 5);
	  Set<Map.Entry<Items, Integer>>  items=c.getGoods().entrySet();
	  for(Map.Entry<Items, Integer> obj:items){
		  System.out.println(obj);
	  }
	  System.out.println("购物车的总金额:"+c.getTotalPrice());
	}
运行结果:
商品编号:1,商品名称:沃特篮球鞋=5
商品编号:2,商品名称:李宁运动鞋=2
购物车的总金额:1600.0


提问者:Juneava 2016-11-22 20:48

个回答

  • SilenceDean
    2016-11-23 12:15:21
    已采纳

    在add的方法里你没有写

    if(goods.containsKey(item)){
    		goods.put(item, goods.get(item)+num);
    	}else{
    		
    		goods.put(item, num);
    	}

    因为Map里的key是不可以重复的,你2次添加的i1和i3相当于重复添加了一个key,后者把前者的value值覆盖了