[英]Store / unset multiple values with same key in HashMap
我正在与在线商店项目合作。 目前,无论用户是否登录,我都在尝试增加将产品添加到购物车的可能性。 我正在使用会话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());
所以我有几个问题:
将此类信息存储在哈希图中是个好选择吗? 还是应该使用Cookie?
我的addToHashmap方法应如何在哈希图中存储多个ID? (我尝试使用实体管理器打印出简单的int [] array = {123,456},但是出现JSON错误...)。
从哈希图中删除/取消设置此类信息的最佳方法是什么?
我希望我的信息清楚,如果您缺少什么-现在让我来。
第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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.