说明:HashMap比SortedMap快,非排序的时候用HashMap
微信支付--签名篇
具体使用到的地方:微信支付生成签名sign的时候,api的原文是
签名生成的通用步骤如下:
第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
package json;
import java.util.*;
/**
* Created by wanggs on 2017/8/23.
*/
public class Test {
@org.junit.Test
public void test(){
HashMap<String,String> map=new HashMap<String, String>();
map.put("3", "33");
map.put("1","11");
map.put("2", "22");
for (Map.Entry<String,String> entry: map.entrySet()) {
System.out.println("排序之前:"+entry.getKey()+" 值"+entry.getValue());
}
System.out.println("======================================================");
SortedMap<String,String> sort=new TreeMap<String,String>(map);
Set<Map.Entry<String,String>> entry1=sort.entrySet();
Iterator<Map.Entry<String,String>> it=entry1.iterator();
while(it.hasNext())
{
Map.Entry<String,String> entry=it.next();
System.out.println("排序之后:"+entry.getKey()+" 值"+entry.getValue());
}
}
/**
* 输出结果:
* 排序之前:1 值11
* 排序之前:2 值22
* 排序之前:3 值33
* ======================================================
* 排序之后:1 值11
* 排序之后:2 值22
* 排序之后:3 值33
*/
}
package json;
import java.util.*;
/**
* Created by wanggs on 2017/8/23.
*/
public class Test {
@org.junit.Test
public void test() {
SortedMap<String,String> map = null ;
map = new TreeMap<String,String>() ; //通过子类实例化接口对象
map.put("D","DDDDD") ;
map.put("A","AAAAA") ;
map.put("C","CCCCC") ;
map.put("B","BBBBB") ;
System.out.println("第一个元素的key:" + map.firstKey()) ;
System.out.println("key对于的值为:" + map.get(map.firstKey())) ;
System.out.println("最后一个元素的key:" + map.lastKey()) ;
System.out.println("key对于的值为:" + map.get(map.lastKey())) ;
System.out.println("返回小于指定范围的集合(键值小于“C”)") ;
for(Map.Entry<String,String> me:map.headMap("C").entrySet()){
System.out.println("\t|- " + me.getKey() + "-->" + me.getValue()) ;
}
System.out.println("返回大于指定范围的集合(键值大于等于“C”)") ;
for(Map.Entry<String,String> me:map.tailMap("C").entrySet()){
System.out.println("\t|- " + me.getKey() + "-->" + me.getValue()) ;
}
System.out.println("返回部分集合(键值“B”和“D”之间,包括B不包括D)") ;
for(Map.Entry<String,String> me:map.subMap("B","D").entrySet()){
System.out.println("\t|- " + me.getKey() + "-->" + me.getValue()) ;
}
}
/**
* 第一个元素的key:A
key对于的值为:AAAAA
最后一个元素的key:D
key对于的值为:DDDDD
返回小于指定范围的集合(键值小于“C”)
|- A-->AAAAA
|- B-->BBBBB
返回大于指定范围的集合(键值大于等于“C”)
|- C-->CCCCC
|- D-->DDDDD
返回部分集合(键值“B”和“D”之间,包括B不包括D)
|- B-->BBBBB
|- C-->CCCCC
*/
}