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

来源:2-8 测试购物车类

Juneava

2016-11-22 20:48

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


写回答 关注

1回答

  • 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值覆盖了

    Juneav...

    看到下一节才明白

    2016-11-23 13:17:05

    共 2 条回复 >

JAVA遇见HTML——Servlet篇

本门课程在JSP课程的基础上,深入介绍Servlet的基础知识

160615 学习 · 1029 问题

查看课程

相似问题