List<Map.Entry<String, Object>> toSort = new ArrayList<Map.Entry<String, Object>>(map.entrySet());
map里面有一个内部接口,用于返回类似于
[key1=value1, key2=value2]
其中【分隔符为 逗号加空格 】【前后均有中括号】
//用eclipse补全信息助手,返回的类型:
Set<Map.Entry<String, Object>> entrySet = map.entrySet();
map.entrySet() 的返回值类型就是Map.Entry<String, Object>
所以上述是说 建立一个List泛型为Map.Entry<String, Object>,内容是map.entrySet()的每一个键值对
public static String orderByAscii(Map<String, Object> paramIn) {
List<Map.Entry<String, Object>> toSort = new ArrayList<Map.Entry<String, Object>>(paramIn.entrySet());
//A→Z升序排列
Collections.sort(toSort, (o1, o2) -> {
return (o1.getKey()).compareTo(o2.getKey());
});
StringBuilder str = new StringBuilder();
for (Map.Entry<String, Object> entry : toSort) {
str.append(entry.getKey());
str.append(entry.getValue());
}
return str.toString();
}
以下是对map 和 map.entrySet() 转换成 json 的一些探究
public static void main(String[] args) throws Exception {
HashMap<String, Object> hashMap = new HashMap<String,Object>();
hashMap.put("k1", "v1");
hashMap.put("k2", "v2");
hashMap.put("k3", "v3");
hashMap.put("k4", "v4");
System.out.println(hashMap);
//{k1=v1, k2=v2, k3=v3, k4=v4}
System.out.println(hashMap.toString());
//{k1=v1, k2=v2, k3=v3, k4=v4}
System.out.println(hashMap.entrySet());
//[k1=v1, k2=v2, k3=v3, k4=v4]
System.out.println(hashMap.entrySet().toString());
//[k1=v1, k2=v2, k3=v3, k4=v4]
//可以看到打印的时候 toString() 方法没什么影响,但事实并非如此
//下面的JSON.toJSONString() 方法让我了解到 toString()之后是一个整体
//这在开发接口时 会带来意想不到的简便操作
System.out.println(JSON.toJSONString(hashMap));
//{"k1":"v1","k2":"v2","k3":"v3","k4":"v4"}
System.out.println(JSON.toJSONString(hashMap.toString()));
//"{k1=v1, k2=v2, k3=v3, k4=v4}"
System.out.println(JSON.toJSONString(hashMap.entrySet()));
//[{"k1":"v1"},{"k2":"v2"},{"k3":"v3"},{"k4":"v4"}]
System.out.println(JSON.toJSONString(hashMap.entrySet().toString()));
//"[k1=v1, k2=v2, k3=v3, k4=v4]"
}
所以我在传递参数的时候会这样写:
System.out.println(hashMap.entrySet().toString());
//[k1=v1, k2=v2, k3=v3, k4=v4]
String str = hashMap.entrySet().toString().replaceAll(", ", "%26");
//将逗号和空格提换成%26(解码后就是&符号)
String param = str.subString(1,str.length()-1);
//k1=v1%26k2=v2%26k3=v3%26k4=v4
——————
2019.02.26
MedusaSTears