java实现对map的字典序排序操作示例
本文实例讲述了java实现对map的字典序排序操作。分享给大家供大家参考,具体如下:
java中对map的字典序排序,算法验证比对微信官网https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=&lang=zh_CN,搜索关键字“附录1-JS-SDK使用权限签名算法”
import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; import org.apache.commons.codec.digest.DigestUtils; import com.opensymphony.xwork2.ActionSupport; public class Test extends ActionSupport { //测试页面 public String test(){ return SUCCESS; } public static void main(String [] args){ String jsapi_ticket="kgt8ON7yVITDhtdwci0qef4Fd1u2d2iWwTE-nt2tSR7Me3FmWAhtxJa3QQCiMdLper4cUrqpDxkDJ6ljLgc7PA"; int timestamp=1460637652; String nonceStr="C1WNnEpCwq4wa158"; String url="http://qq.test.com/test/index.html"; //字典序排序 HashMap<String,String> map=new HashMap<String,String>(); map.put("jsapi_ticket", jsapi_ticket); map.put("timestamp", timestamp+""); map.put("nonceStr", nonceStr); map.put("url", url); Collection<String> keyset= map.keySet(); List list=new ArrayList<String>(keyset); Collections.sort(list); //这种打印出的字符串顺序和微信官网提供的字典序顺序是一致的 for(int i=0;i<list.size();i++){ System.out.println(list.get(i)+"="+map.get(list.get(i))); } //微信官网写的按照字典序排序后的字符串 String sign="jsapi_ticket="+jsapi_ticket+"&noncestr="+nonceStr+"×tamp="+timestamp+"&url="+url; //System.out.println(DigestUtils.shaHex("jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW×tamp=1414587457&url=http://mp.weixin.qq.com?params=value")); //微信返回的加密串 String signature=DigestUtils.shaHex(sign);//sha1加密 System.out.println(signature); } }
PS:这里再为大家推荐一款关于排序的演示工具供大家参考:
在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:
http://tools.jb51.net/aideddesign/paixu_ys
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
赞 (0)