我从事 Java/HTML 项目。我已将哈希图设置为会话属性。我从会话中请求哈希图并将键/值放入其中
map.put("some string", "1")
。当第二次执行此操作时,我打印了 hashmap 内容并且唯一的值,即在 hashmap 上的最后一次操作之后为“1”,变为“-1”。
在我看来,Hashmap 是这个项目最好的数据结构。任何人都可以帮忙吗?
public class Cart {
private HashMap<String, asd> list;
public Cart(){
list = new HashMap<String, asd>();
}
public HashMap<String, asd> getMap(){
return list;
}
/*
* Parameter: code
* -1: increase quantity by 1
* 0: delete product from the product list
* else: set the product quantity to the passed value
*/
public void alterProduct(int code, String product){
if(list.containsKey(product)) {
if(code == -1) plusOne(product);
if(code == 0) remove(product);
else setValue(product, code);
}else {
asd asd = new asd();
asd.a = 1;
list.put(product, asd);
}
}
private void plusOne(String product){
asd asd = list.get(product);
asd.a = asd.a + 1;
list.put(product, asd);
}
private void remove(String product){
list.remove(product);
}
private void setValue(String product, int code){
asd asd = new asd();
asd.a = code;
list.put(product, asd);
}
}
class asd{
int a;
public String toString(){
return ""+a;
}
}
Cart
我将对象设置为会话属性的JSP 代码:
<%
Cart myCart = new Cart();
session.setAttribute("cart",myCart);
%>
小服务程序代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
Cart cart = (Cart) request.getSession().getAttribute("cart");
cart.alterProduct(-1, (String) request.getSession().getAttribute("name"));
doGet(request, response);
}
在我alterProduct
第二次调用相同(String) request.getSession().getAttribute("name")
的值后,相同键的哈希映射值为'-1'。