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);
  • 相关阅读:
    ant desigon Upload控件能否提供隐藏删除图标的属性以及鼠标停留在删除图标上的提示文字怎么设置为中文
    2月5日进度
    2月4日学习进度
    2月3日学习进度
    2月2日学习进度
    大数据之linux环境下jdk hadoop以及hbase,hive等配置
    MVC实例
    MVC简介
    23种设计模式
    xxx系统可用性和易用性分析
  • 原文地址:https://www.cnblogs.com/dbutil/p/10443408.html
Copyright © 2011-2022 走看看