java實現(xiàn)對map的字典序排序操作示例
本文實例講述了java實現(xiàn)對map的字典序排序操作。分享給大家供大家參考,具體如下:
java中對map的字典序排序,算法驗證比對微信官網(wǎng)https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=&lang=zh_CN,搜索關(guān)鍵字“附錄1-JS-SDK使用權(quán)限簽名算法”
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); //這種打印出的字符串順序和微信官網(wǎng)提供的字典序順序是一致的 for(int i=0;i<list.size();i++){ System.out.println(list.get(i)+"="+map.get(list.get(i))); } //微信官網(wǎng)寫的按照字典序排序后的字符串 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:這里再為大家推薦一款關(guān)于排序的演示工具供大家參考:
在線動畫演示插入/選擇/冒泡/歸并/希爾/快速排序算法過程工具:
http://tools.jb51.net/aideddesign/paixu_ys
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
在SpringBoot3中spring.factories配置不起作用的原因和解決方法
本文給大家介紹了在SpringBoot3中spring.factories配置的自動裝配不生效的原因和解決方法,文中通過代碼和圖文給出了詳細(xì)的解決方法,具有一定的參考價值,需要的朋友可以參考下2024-02-02Java數(shù)據(jù)結(jié)構(gòu)之鏈表的增刪查改詳解
今天帶大家來學(xué)習(xí)Java鏈表的增刪改查的相關(guān)知識,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)Java的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05Java中Object轉(zhuǎn)換為List類型的實現(xiàn)方法
這篇文章主要介紹了Java中Object轉(zhuǎn)換為List類型的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03