在HashMap

时间:2015-08-28 08:09:17

标签: java session java-ee hashmap session-variables

我正在使用在线商店项目。目前我正试图增加将产品添加到购物车的可能性,无论用户是否登录。我正在使用会话bean方法来做到这一点。

@Inject ShoppingCartSessionBean shoppingCartSessionBean; 

@POST
public boolean addToCart(@PathParam("productid") int newProductId, @PathParam("qu") int newProductQuantity) {
    shoppingCartSessionBean.setCartItems(newProductId);
    shoppingCartSessionBean.setProductQuantity(newProductQuantity);
    return true;    
 }

我想在哈希映射中存储id。但是,目前我只能为我的setter方法设置一个id。

@Stateful
@SessionScoped
public class ShoppingCartSessionBean implements Serializable{

HashMap<Integer, Integer> newmap = new HashMap<Integer, Integer>();

public int addToHashMap() {  

return array of productId's.
}

private static final long serialVersionUID = -5024959800049014671L;

private int productId;

private int productQuantity;

//getters and setters

Map<Integer, ShoppingCartSessionBean> hm = new HashMap<Integer, ShoppingCartSessionBean>();

稍后我使用实体管理器检查设置了哪个ID / id,并将有关该id的所有信息发回给用户。由于空间问题,我没有将所有值存储在会话bean中。

Query q = em.createQuery("SELECT c FROM Items c WHERE c.productId = :itemid");
        q.setParameter("itemid", shoppingCartSessionBean.addToHashMap());

所以我有几个问题:

  1. 将这些信息存储在哈希映射中是不错的选择?或者我应该使用cookies吗?

  2. 我的addToHashmap方法应如何在哈希映射中存储多个id? (我尝试使用我的实体管理器打印出简单的int [] array = {123,456},但是我收到了JSON错误...)。

  3. 从哈希映射中删除/取消设置此类信息的最佳方法是什么?

  4. 我希望我的信息很清楚,如果你遗失了什么 - 现在就让我吧。

1 个答案:

答案 0 :(得分:0)

第2点和第3点。您需要检查是否存在哈希冲突,在正面情况下您需要对其进行处理。看下面的代码。

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;


public class HashMapTest {

    private static HashMap<String, List<String>> map = new HashMap<String, List<String>>();

    public static void insert(String key, String value){
        List<String> list = map.get(key);
        if (list == null){
            list = new ArrayList<String>();
            map.put(key, list);
        }
        list.add(value);
    }



    public static void main(String[] args){

        insert("10", "V1");
        insert("10", "V2");
        insert("20", "V3"); 
        insert("20", "V4");
        insert("30", "V5");
        List<String> values10 = map.get("10");
        System.out.println(values10);
        List<String> values20 = map.get("20");
        System.out.println(values20);
        List<String> values30 = map.get("30");
        System.out.println(values30);
    }
}