Java將Map拼接成“參數=值&參數=值”
把一個map的鍵值對拼接成“參數=值&參數=值”即“username=angusbao&password=123456”這種形式方便傳遞,尤其是在接口調用的時候,這種方式使用的更加普遍,比如http請求的get方式,如何用java對其進行解決呢?
代碼如下:
/**
* 把數組所有元素排序,並按照“參數=參數值”的模式用“&”字符拼接成字符串
* @param params 需要排序並參與字符拼接的參數組
* @return 拼接后字符串
* @throws UnsupportedEncodingException
*/
public static String createLinkStringByGet(Map<String, String> params) throws UnsupportedEncodingException {
List<String> keys = new ArrayList<String>(params.keySet());
Collections.sort(keys);
String prestr = "";
for (int i = 0; i < keys.size(); i++) {
String key = keys.get(i);
String value = params.get(key);
value = URLEncoder.encode(value, "UTF-8");
if (i == keys.size() - 1) {//拼接時,不包括最后一個&字符
prestr = prestr + key + "=" + value;
} else {
prestr = prestr + key + "=" + value + "&";
}
}
return prestr;
}
public static void main(String[] args) throws UnsupportedEncodingException {
Map<String,String> map= new HashMap<String,String>();
map.put("1", "hello");
map.put("2", "world");
System.out.println(createLinkStringByGet(map));
}
最后結果為:1=hello&2=world