有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在java中为映射赋值

我从我的应用程序中获取requestParameters映射,并将其分配给具有一些更改值的不同map。基本上我得到的输出是

email=a@a.com
login
projectname=abc

我想分配

email=a@a.com
request=login
projectname=abc

所以我做了这个

    tempKey=new String[requestParameters.size()];
    tempValue=new String[requestParameters.size()];
    requestParams=new HashMap();

    while(iterator.hasNext())
    {

        Map.Entry me=(Map.Entry)iterator.next();
        String[] arr=(String[])me.getValue();

        if(me.getKey().toString().equalsIgnoreCase("login"))
        {
            tempKey[i]="request";
            tempValue[i]=me.getKey().toString();

        }
        else
        {
            tempValue[i]=arr[0];
            tempKey[i]=me.getKey().toString();
        }

        requestParams.put(tempKey[i], tempValue[i]);
        log.info(tempKey[i]+"="+tempValue[i]);
        i++;
    }

我试图像这样打印来自requestParams的值,但什么也得不到

iterator=requestParams.entrySet().iterator();
    while(iterator.hasNext())
    {

        Map.Entry me=(Map.Entry)iterator.next();
        String[] arr=(String[])me.getValue();
        log.info(me.getKey().toString()+"="+arr[0]);
    }

它使用tempKey[i]+"="+tempValue[i]正确地打印log,但是它没有为requestParams(修改的映射)赋值,上面的代码有什么错误


共 (2) 个答案

  1. # 1 楼答案

    我会复制现有地图并更改不同的值:

    Map<String, String> newMap = new HashMap<String, String>(requestParameters);
    newMap.put("request", "login");
    newMap.remove("login");
    
  2. # 2 楼答案

    请求参数映射通常是不可修改的映射。。因此,对make所做的任何更改都不会被保存。您需要创建另一个地图,并将所有可以更改的条目放入地图中