1.Map删除
Map<String,Object> requestMap = request.getParameterMap();
requestMap.remove("sign");//报错,不能删除锁定的值
解决方案:赋值给一个新的mapMap<String,Object> map = new HashMap<String,Object>();
map.putAll(requestMap);
map.remove("sign");//正确,可以进行正常的删除,修改。
2.Map排序迭代(标红)
/**
* 区分
* 把数组所有元素排序,并按照“参数=参数值”的模式用“&”字符拼接成字符串
*
* @param params
* 需要排序并参与字符拼接的参数组
* @param encode 是否需要urlEncode
* @return 拼接后字符串
*/
public static String createLinkString2(Map<String, Object> params, boolean encode) {
List<String> keys = new ArrayList<String>(params.keySet());
Collections.sort(keys);
String prestr = "";
String charset = (String) params.get("_input_charset");
for (int i = 0; i < keys.size(); i++) {
String key = keys.get(i); //String value = (String)params.get(key);//出错。map的get(key)返回的是String[]
//主要是针对request.getParameterMap()取出来的map的get(key)返回的是String[]
String value = ((String[])params.get(key))[0];
if (StringUtils.isNotBlank(value)){
if (encode) {
try {
value = URLEncoder.encode(value, charset);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
if (i == keys.size() - 1) {// 拼接时,不包括最后一个&字符
prestr = prestr + key + "=" + value;
} else {
prestr = prestr + key + "=" + value + "&";
}
}
}
return prestr;
}