通常在业务需求中调用别人接口的时候,会有对英文字母升序排序(ASCII升序),然后加密啥的,最后生成一个签名再传给对方这一类的要求,这里巧妙利用TreeMap来实现ASCII排序。
public static String sendNewData(String userName, String key,String url) {
String result = "";
try {
//把参数put到TreeMap里去
Map<String, String> map = new TreeMap<String, String>();
map.put("userName", userName);
map.put("time", String.valueOf(System.currentTimeMillis() / 1000));
map.put("sign", buildSign(map, key));//构建签名,参数已经重新按照ASCII排序过
result = post(url, map);//post请求
System.out.println(result);// 打印返回的结果
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
构建签名的时候,我们只需把TreeMap里的参数一个个的取出来就行了,TreeMap已经把我们之前put进去的参数自动排序了
public static String buildSign(Map<String, String> map, String key) {
Set<Entry<String, String>> set = map.entrySet();
StringBuffer sb = new StringBuffer();
//取出排序后的参数,逐一连接起来
for (Iterator<Map.Entry<String, String>> it = set.iterator(); it.hasNext();) {
Map.Entry<String, String> me = it.next();
sb.append(me.getValue() + "|");
}
sb.append(key);
return sb.toString().toUpperCase();//返回最终排序后的结果,这里key不参与排序中,具体看接口规约
//return (Md5Encrypt.encrypt(sb.toString())).toUpperCase();//这个带有md5加密的,算法就不贴了,网上很多
}
分享到:
相关推荐
在Java编程中,有时我们需要对一组参数按照字典顺序(ASCII码值从小到大)进行排序,例如在创建签名或构建URL查询字符串时。这里提供了一个名为`createSign`的方法,它接受一个`Map, Object>`类型的参数,并返回一个...
以下是对`Map`按照值升序排序的实现代码: ```java public class MapSorter { public static Map.Entry[] getSortedHashtableByValue(Map, ?> h) { Set, ?>> set = h.entrySet(); Map.Entry, ?>[] entries = set...
JAVA中TreeMap是一种基于红黑树的实现,能够自动对key进行排序。下面将详细介绍如何使用TreeMap对字符串进行排序。 首先,需要了解TreeMap的特点。TreeMap是一种基于红黑树的实现,jdk1.2开始自动排序。这种数据...
标题中的“treeMap实现分组数据树形结构”指的是利用`TreeMap`的特性,将数据根据某个或某些键值进行分组,并以树形结构展示,每个节点代表一个分组,其子节点是该分组内的数据。这种结构有助于快速查找和访问具有...
TreeMap按VALUE排序
TreeMap是Java集合框架中的一种有序映射数据结构,它实现了SortedMap接口,提供了按自然顺序或自定义比较器顺序存储键值对的能力。在深入理解TreeMap的源码之前,我们首先要了解其背后的基石——红黑树。 红黑树...
在Java编程语言中,`TreeMap`是一种基于红黑树数据结构实现的键值对容器,与`HashMap`不同,`TreeMap`自动按照键的自然顺序或者自定义的比较器进行排序。当我们需要存储的数据有特定的排序需求时,`TreeMap`便成为一...
在上面的代码中,我们使用Comparator接口来实现对字符串的排序。compareTo()方法是String类提供的一个方法,它可以比较两个字符串的大小,如果字符串参数等于当前字符串,则返回0值;如果当前字符串小于字符串参数,...
本资源提供了List对对象中的属性和TreeMap, String>对键值排序,并针对100w条数据排序,对比List和TreeMap, String>排序的效率。个人认为排序效率对比可以相信,但也可能存在不科学之处,还请高手给与指点,多多包涵...
在这个场景中,我们关注的是如何利用比较器(Comparator)来实现联系人列表的动态排序,既可以按姓名,也可以按电话号码进行排列。 首先,联系人数据通常存储在List或其他类型的集合中,每个联系人对象包含姓名和...
TreeMap,V>是一个基于红黑树的实现,它可以保证映射按照升序顺序排列关键字。TreeMap,V>的构造器可以接受一个比较器,用于定义比较规则。这样,我们可以按照键的自然顺序进行排序,或者按照创建时所提供的比较器进行...
在C#中,开发者需要自定义绘图逻辑或利用库的扩展性来实现这样的组合视图。例如,当用户点击TreeMap中的一个矩形时,可以动态替换为相应的Sunburst图,展示该矩形代表的子数据集。 总之,C#的Treemap和Sunburst算法...
TreeMap是基于红黑树的NavigableMap实现,它提供了对元素的排序功能。当创建TreeMap实例时,它会根据键的自然顺序(实现了Comparable接口)或者通过在创建TreeMap时提供的Comparator来排序键。 代码中创建了一个...
在 Vue 组件中,这些配置项会作为参数传递给 ECharts 的 `setOption()` 方法。 5. **动态加载与更新**:如果要在对话框中显示 TreeMap,你可能需要监听对话框的打开和关闭事件,以便在打开时加载或更新图表,在关闭...
在Java编程语言中,`TreeMap` 是一个有序的键值对集合,它实现了 `SortedMap` 接口。这个数据结构内部基于红黑树(Red-Black Tree)算法实现,保证了插入、删除和查找操作的时间复杂度为 O(log n)。在“java treemap...
TreeMap自己的理解
Java TreeMap是一个有序的Map实现,它可以根据对象的自然顺序或自定义的比较器对键进行排序。在本例中,我们使用TreeMap来统计一个句子或一个段落中单词出现的次数,并按照字母表顺序输出。 知识点1:Java TreeMap...
6. **分支结构**:TreeMap利用红黑树的特性,保持了数据的平衡,即使在大量插入和删除后,也能保持高效的查找性能。 7. **并发性**:如果你需要在多线程环境中使用TreeMap,可能需要使用`ConcurrentSkipListMap`,...
要创建一个TreeMap,我们首先需要对数据进行预处理,将CSV文件读入并整合成一个适合可视化的数据结构。可以使用pandas库来完成这个任务,如下所示: ```python import pandas as pd # 读取CSV文件 products = pd....