java ee问题,我用map.remove()方法不能删除元素

/***清空所有条目*/publicvoidclear(){map.clear();}上面这个清空功能可以,但是下面这个删除元素就不行。我确定map.remove(bid... /**
* 清空所有条目
*/
public void clear() {
map.clear();
}

上面这个清空功能可以,但是下面这个删除元素就不行。我确定map.remove(bid)已经执行了,控制台下面都打印了要删除商品的 id,但是不知道为什么这个功能没有执行。添加,清空都可以,就删除不行。

这是整个项目的网盘地址:http://pan.baidu.com/s/1gdm00EJ
连数据库表的创建语句都有了,改下密码就行了,
帮我看看是什么问题
这是我改后的图:
展开
 我来答
dark19861201
2015-06-18 · TA获得超过2153个赞
知道大有可为答主
回答量:2584
采纳率:79%
帮助的人:1798万
展开全部
大致看了下目前的情况,我估计你大概没理解MAP的数据结构,map是一种以key value形式保存数据的结构,你用的remove方法接收的参数是指map的key值,我怀疑你的这个bid并不是map的key值,而是value值,理由就是map.containsKey(bid);这句话的结果是false,所以你不能直接调用remove方法删除,只能遍历map比较value值:
Iterator it = map.keySet().iterator();
if(it.hasNext()){
Object o = it.next();
if(bid.equals(o)){
it.remove();
}
}
这样应该可以了,不过这不是最好的办法,你应该去看看数据进入map的时候是如何保存的,调用这个delete方法的时候应该传过来的是这个map当时存放的key,这样才比较高效
更多追问追答
追问

报错了,我把错误写在后面的注释上了,怎么改?

如果不全,我上面有我代码的网盘地址,帮看看,谢谢

追答
你报什么错贴出来看看,我估计是没导包,你试试快捷键ctrl+shift+o
apollo47
2015-06-18 · TA获得超过1451个赞
知道小有建树答主
回答量:810
采纳率:0%
帮助的人:539万
展开全部
"但是不知道为什么这个功能没有执行"具体指什么? 是执行后map中还存在key为1的商品?
System.out.println(map.size()); // 打印删除前的个数。
System.out.println(map.get(bid)); // 打印为bid的商品,如果为null,说明商品不存在。
map.remove(bid);
System.out.println(map.size()); // 打印删除后的个数.
更多追问追答
追问

这种打印情况该怎么改呢?bid存在是1,但是删不掉

追答
晕死,是不是里面的1是int型,不是String类型?
map.remove(1); 而不是map.remove("1");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
贸垒2u
2015-06-18 · TA获得超过207个赞
知道小有建树答主
回答量:464
采纳率:0%
帮助的人:339万
展开全部
你在remove前把map的key都打出来,remove后再打一遍出来 对比
更多追问追答
追问
对比什么?都打印过了,要删除的商品id都是 1 +我后面自定义的字符串
追答
那要看map里的值是怎么样的啊,是否存在或相等,还可以进一步,把map里的key都拿来和bid  equals 一下看看是否相等        不检查清楚怎么知道问题所在

还可以试一下 map.containsKey(bid )
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
转目已过
2015-06-18
知道答主
回答量:20
采纳率:0%
帮助的人:13.2万
展开全部
你确定你添加了bid?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-06-18
展开全部
说明map中不存在此对象。。。。。。。。。。。
追问
清空都能清掉了,怎么不存在
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式