Java/HTML プロジェクトに取り組んでいます。セッション属性としてハッシュマップを設定しました。セッションからハッシュマップをリクエストし、キー/値を入れます
map.put("some string", "1")
。このアクションが 2 回目に実行されると、ハッシュマップの内容が出力され、ハッシュマップの最後の操作の後に「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
同じキーを2 回呼び出した後(String) request.getSession().getAttribute("name")
、同じキーのハッシュマップ値は「-1」です。