欢迎来到[小脾气]的博客

做人要像铜钱,内方外圆

Java 根据 Map 的 key 的 ASCII 码从小到大排序

1.主要有两种方式,第一种使用treemap,第二种使用sort方法对map的key进行排序重组一个新的map 。一般使用treemap 

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

public class Test3 {
    public static void main(String[] args) {

        // 方式一:TreeMap可以自动排序
        TreeMap<String, Object> params = new TreeMap<String, Object>();
        setData(params);
        
        StringBuilder s1 = new StringBuilder();
        for (String key : params.keySet()) {
            s1.append(key).append("=").append(params.get(key)).append("&");
        }
        s1.deleteCharAt(s1.length() - 1);
        System.out.println(s1);
        
        //方式二:使用HashMap,并使用Arrays.sort排序
        HashMap<String, Object> params2 = new HashMap<String, Object>();
        setData(params2);
        String[] sortedKeys = params2.keySet().toArray(new String[]{});
        Arrays.sort(sortedKeys);// 排序请求参数
        StringBuilder s2 = new StringBuilder();
        for (String key : sortedKeys) {
            s2.append(key).append("=").append(params2.get(key)).append("&");
        }
        s2.deleteCharAt(s2.length() - 1);
        System.out.println(s2);
        
        System.out.println(s1.toString().equals(s2.toString()));
        

    }
    
    private  static void setData(Map<String,Object> params){
        params.put("Nonce", 11886); 
        params.put("Timestamp", 1465185768); 
        params.put("SecretId", "AKIDz8krbsJ5yKBZQpn74WFkmLPx3EXAMPLE");
        params.put("Action", "DescribeInstances"); 
        params.put("Version", "2017-03-12"); 
        params.put("Region", "ap-guangzhou"); 
        params.put("Limit", 20); 
        params.put("Offset", 0); 
        params.put("测试", "测试"); 
    }
}

2.另外 fastjson如果使用1.2.31及以上版本,如果需要转成json时候可以直接在转json的时候排序

Map message = new HashMap();
        message.put("channel_id","1000000xxxxx");
        message.put("request_no", "1705105267714827140");
        message.put("timestamp",new Date().getTime());
        String sign = JSONObject.toJSONString(message, SerializerFeature.MapSortField);

 

posted on 2019-02-27 14:16  嚯嚯,小脾气  阅读(1938)  评论(0编辑  收藏  举报

导航