Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在HashMap中存储/取消设置具有相同键的多个值_Java_Session_Jakarta Ee_Hashmap_Session Variables - Fatal编程技术网

Java 在HashMap中存储/取消设置具有相同键的多个值

Java 在HashMap中存储/取消设置具有相同键的多个值,java,session,jakarta-ee,hashmap,session-variables,Java,Session,Jakarta Ee,Hashmap,Session Variables,我正在从事在线商店项目。目前,我正在尝试添加的可能性,添加产品到购物车,无论用户是否登录。我正在使用会话bean方法来完成它 @Inject ShoppingCartSessionBean shoppingCartSessionBean; @POST public boolean addToCart(@PathParam("productid") int newProductId, @PathParam("qu") int newProductQuantity) { shopping

我正在从事在线商店项目。目前,我正在尝试添加的可能性,添加产品到购物车,无论用户是否登录。我正在使用会话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>();
所以我有几个问题:

  • 将此类信息存储在哈希映射中是否是一个好的选择?或者我应该用饼干来代替

  • 我的addToHashmap方法在HashMap中存储多个id应该是什么样子?(我尝试了一个简单的int[]array={123456}来使用我的实体管理器打印出来,但是我得到了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);
        }
    }
    
    import java.util.ArrayList;
    导入java.util.HashMap;
    导入java.util.List;
    公共类HashMapTest{
    私有静态HashMap map=newhashmap();
    公共静态void插入(字符串键、字符串值){
    List=map.get(键);
    if(list==null){
    列表=新的ArrayList();
    地图。放置(键、列表);
    }
    列表。添加(值);
    }
    公共静态void main(字符串[]args){
    插入(“10”,“V1”);
    插入(“10”、“V2”);
    插入(“20”,“V3”);
    插入(“20”,“V4”);
    插入(“30”,“V5”);
    列表值10=map.get(“10”);
    系统输出打印项次(值10);
    列表值20=map.get(“20”);
    系统输出打印项次(值20);
    列表值30=map.get(“30”);
    系统输出打印项次(值30);
    }
    }
    
    仍然存在此问题。。。
    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);
        }
    }