购物车中用HashMap怎么逐个清空

来源:百度知道 编辑:UC知道 时间:2024/06/05 12:42:39
我用SSH框架做的,但是出现了问题,出现了CartItemBean类的错误,请各位大哥大姐帮我看看!
int id=Integer.parseInt(request.getParameter("id"));

HttpSession session = request.getSession();
Map map=(Map) request.getSession().getAttribute("cart");

Set keyset = map.keySet();
Object[] keys = keyset.toArray();
for(int i=0;i<keys.length;i++)
{
if(id==((CartItemBean) map.get(keys[i])).getBook().getBookId())
{
((Map)map.get(keys[i])).clear();//逐个清空的代码
}
}
return mapping.findForward("shopcart");

代码如下:
建议
1、不建议在遍历MAP的同时删除其中内容,这样会造成MAP实际长度变短
2、首先将需要清除的ID记录在LIST中,然后对该LIST进行遍历的时候再删除
3、建议处理Map和List的时候使用迭代器iterator,这样效率会高些

ArrayList keyList = new ArrayList();
Set keyset = map.keySet();
Object[] keys = keyset.toArray();
for (int i = 0; i < keys.length; i++) {
if (id == ((CartItemBean) map.get(keys[i])).getBook().getBookId()) {
keyList.add(keys[i]);
}
}
for(Iterator it = keyList.iterator();it.hasNext();){
Object key = it.next();
map.remove(key);
}