ASCII 码从小到大排序

        今天调用接口的时候,人家的接口规定得按照ASCII 的排序方式,对参数进行排序,然后把排好序的参数

按照key=value键值对的方式进行加密验证,接下来就给大家分享下这个排序工具类ASCIISortUtil.java

1public class ASCIISortUtil { 2 3 /** 4 * 5 * 将参数按照字段名的 ASCII 码从小到大排序(字典序)后,使用 URL 键值 6 * 对的格式(即key1=value1&key2=value2…)拼接成字符串 7 * 8 * @param paraMap 9 * 转换参数 10 * @param isURLEncode 11 * 是否对所有Value进行URLEncod转码 12 * @return 13 * 14 */ 15 public static String formatQueryParaMap(Map<String, String> paraMap, boolean isURLEncode) { 16 String returnValue = null; 17 try { 18 List<Entry<String, String>> infoIds = new ArrayList<Entry<String, String>>(paraMap.entrySet()); 19 Collections.sort(infoIds, new Comparator<Entry<String, String>>() { 20 public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) { 21 return (o1.getKey()).toString().compareTo(o2.getKey()); 22 } 23 }); 24 StringBuffer buff = new StringBuffer(); 25 for (int i = 0; i < infoIds.size(); i++) { 26 Map.Entry<String, String> item = infoIds.get(i); 27 if (null != item.getKey() && !"".equals(item.getKey())) { 28 String key = item.getKey(); 29 String val = item.getValue(); 30 if (isURLEncode) { 31 val = URLEncoder.encode(val, "UTF-8"); 32 /* 空格通过URLEncoder转码后是“+”,所有要替换成“%20” */ 33 val = val.replace("+", "%20"); 34 } 35 buff.append(key + "=" + val + "&"); 36 } 37 } 38 returnValue = buff.toString(); 39 if (null != returnValue && !"".equals(returnValue)) { 40 returnValue = returnValue.substring(0, returnValue.length() - 1); 41 } 42 } catch (Exception e) { 43 throw new RuntimeException(e.getMessage()); 44 } 45 return returnValue; 46 } 47}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Twitter的分布式自增ID算法snowflake (Java版)

概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移

mysql 数据库group by 按排序取值

mysql数据库groupby按排序取值 mysql5.7以后,groupby想要按照排序的顺序来取值,在子结果集中要有union,groupby等操作,不然按照id默认排序来取值示例:数据库:score表id user\_id num1 100     952 100     963