zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    12个Web开发者应该掌握的Firebug技巧
    sql语句修改表结构
    从数据库中查询数据
    收发短信API
    日志12.03
    监听短信数据库变化
    漫谈C语言及如何学习C语言(转)
    阅读短信
    在src文件中寻找短信数据库表
    拦截短信示例1
  • 原文地址:https://www.cnblogs.com/dbutil/p/10443408.html
Copyright © 2011-2022 走看看