我从我的应用中获取了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
(修改后的地图)指定值,上面的代码有什么问题?
答案 0 :(得分:2)
我会复制现有地图并更改不同的值:
Map<String, String> newMap = new HashMap<String, String>(requestParameters);
newMap.put("request", "login");
newMap.remove("login");
答案 1 :(得分:0)
请求参数映射,通常是不可修改的映射..因此,您对make所做的任何更改都不会被保存。您需要创建另一个地图并将所有条目放入地图中,然后才能更改。