慕瓜6043569
打印的方法就是调用的tostring方法。
qq_Funfunfunny_0
我知道了,下一节有思路
慕妹7221339
重写equals方法比较id是否相同
然后判断商品map里是否包含那个id
包含就取出原来的值赋值给一个初始值,否则初始值为0
然后初始值自增
rm_dream
goods对象没有实例化呗
qq_杀意隆_0
数量不应该作为商品类实例的固有属性,要不然变更数量会很麻烦
火龙果泡稀饭
while (it.hasNext()) {
Entry<Items, Integer> i = it.next();
System.out.println(i);
}打印输出的是 i, 而 i 是一个键值对。
等号左边是键,就是你重写的toString方法的输出;
等号右边是值,就是商品数量。
qq_与赠_03193390
当然可以啊
Catalina7
获得商品全部信息,entry是map的一个内部类,相当于既获得了key,又获得了value,其实和keyset类似。
慕粉4047030
在addItemInCart()和removeFromCart()方法里,有调用
qq_我会告诉你吗_0
可能是cookie里的键不能为数字,你换英文字符串试一下
qq_南瓜_10
你是个什么意思? 你是说goods.get(i)取到的值永远是1?
这是循环啊,it.next()每一次取出的值都是不同的啊,是根据商品的属性去取出了商品的数量啊,所以也许数量会是1,但是商品是不同的,
qq_不囧_0
hashmap遍历输出是键值对Map.Entry<Item, Integer>,就像每次输出一行键值对,toString()只影响Item项的格式,而Integer的输出内定的=Integer.不知道解释的清楚不:)
线粒体123
579末班车
改成for (Map.Entry<Goods, Integer> obj : goods)
慕妹4187063
entyrset()方法本身获取的就是一个HashMap键值对的键的集合。所以这里已经获得了作为键的Items类型的集合。所以这里的obj本身就是key值。
慕粉1474341376
public Items(int id,String name,String city,int price,int number,String picture)
{
this.id = id;
this.name = name;
this.city = city;
this.picture = picture;
this.price = price;
this.number = number;
}
weiiNice
这个是一样的,最后的结果就是遍历整个集合,你说的前面一节用迭代器,因为set集合实现了Serializable接口,所以可以用迭代器来遍历整个集合,当然你也可以用增强for循环,这都是可以的。
对于你说的,现在遍历商品集合时候用增强·for循环,其实你可以用迭代器,只不过的得到i.next()的类型是Map.Entry<items,number>,其他都是一样的,你可以试一下,祝你好运。
慕函数3178513
补个图,应该能比较容易的看出来了,第一个添加的数量2被覆盖了,同时也能够看出来对象作为键值的时候即便里面的数据完全一样,只要不是同一个对象就不是同一个键。

qq__5465
直接return totalprice并不会导致结果发生改变,所以应该是其他问题,或者请把代码贴全
while(it.hasNext())
{
Items i=it.next();
this.setTotalPrice(this.getTotalPrice()+i.getPrice()*goods.get(i));
}
return this.getTotalPrice();
结果:1200
Juneava
在add的方法里你没有写
if(goods.containsKey(item)){
goods.put(item, goods.get(item)+num);
}else{
goods.put(item, num);
}因为Map里的key是不可以重复的,你2次添加的i1和i3相当于重复添加了一个key,后者把前者的value值覆盖了
慕粉九星
list+=request.getParameter("id")+",";
改成
list+=request.getParameter("id")+"#";
tomcat版本问题,不识别“,”
昨天遇到了一样的问题
慕粉1474420710
因为你重写的代码里面没有哈西码的部分
Feilan_shark
我也不懂
okyoung188
主要原因是重写了items类的hasCode和equals()方法,
慕神5288080
weibo_迷上火山baby_03375472
有两种可能,第一你的addGoodsInCart()方法有问题,第二重是你的getTotalPrice()方法有问题,具体出现了什么问题,因为没有你cart类的代码,所以我可能帮你解决不了,但是一般找bug的思想就是哪里得到的它,你就从哪里开始debug
autumn_2016
Set<Entry<Items,Integer>> items = cart.getGoods().entrySet();
for(Entry<Items,Integer> obj:items)
{
System.out.println(obj);
}
qq_老表_1
MDZZ这是泛型 不是键值
Refactor易先生
一样啊 map就是通过entry实现的,entry对象封装了key 和value
ITLover
public Items(int id,String name,String city,int price,int number,String picture)
{
this.id = id;
this.name = name;
this.city = city;
this.picture = picture;
this.price = price;
this.number = number;
}粘到Items类中