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-02
Java數(shù)據(jù)結(jié)構(gòu)之鏈表的增刪查改詳解
今天帶大家來學(xué)習(xí)Java鏈表的增刪改查的相關(guān)知識,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)Java的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05
Java中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

