【MedusaSTears】依据ASCII排序:有关map.entrySet()的一些心得

本文探讨了Java中Map的使用方法,包括如何通过Map.Entry进行排序,以及Map与Map.entrySet()转换为JSON格式的过程。文章详细展示了如何利用Eclipse的代码辅助功能,对Map的键值对进行ASCII排序,并通过实例说明了toString()方法在JSON转换中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值