如何在java中为Map赋值

时间:2011-05-19 05:58:33

标签: java

我从我的应用中获取了requestParameters Map,并将其分配给具有一些更改值的其他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]);
    }

使用log正确打印tempKey[i]+"="+tempValue[i],但它没有为requestParams(修改后的地图)指定值,上面的代码有什么问题?

2 个答案:

答案 0 :(得分:2)

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

Map<String, String> newMap = new HashMap<String, String>(requestParameters);
newMap.put("request", "login");
newMap.remove("login");

答案 1 :(得分:0)

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