JSP(Java)的ASCII码字典排序

方法一:

	/**
	 * ASCII码字典序
	 * @param map
	 * @return
	 */
	public static String ASCII(Map<String, String> map) {
		StringBuilder result = new StringBuilder();
		try {
			List<Map.Entry<String, String>> infoIds = new ArrayList<Map.Entry<String, String>>(map.entrySet());
			// 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序)
			Collections.sort(infoIds, new Comparator<Map.Entry<String, String>>() {
				public int compare(Map.Entry<String, String> map1, Map.Entry<String, String> map2) {
					return (map1.getKey()).toString().compareTo(map2.getKey());
				}
			});
            // 构造签名键值对的格式
			for (Map.Entry<String, String> item : infoIds) {
				String key = item.getKey();
				String val = item.getValue();
				if (key == null||key.equals("")||key.equals("sign")||val == null||val.equals(""))
					continue;// 跳过这些不签名			
				if (!result.toString().equals("")) 
					result.append('&'); // 第一个字符串签名不加& 其他加&连接起来参数
				result.append(key + "=" + val);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result.toString();
	}

方法二:

    /**
	 * ASCII码字典序
	 * 
	 * @param map
	 * @return
	 */
	public static String ASCII(Map<String, String> params) {
		List<String> keys = new ArrayList<String>(params.keySet()); //转为数组
	  	Collections.sort(keys); //重新排序
	  	StringBuilder prestr = new StringBuilder();
	  	for (int i = 0; i < keys.size(); i++) { //遍历拼接url 拼接成a=1&b=2
            String key = keys.get(i);
            String value = params.get(key);
	    	if(key== null||key.equals("")||key.equals("sign")||value== null||value.equals("")){
	    		continue; //跳过这些 不签名
	    	}
	    	if (!prestr.toString().equals("")) {
	    		prestr.append('&'); // 第一个字符串签名不加& 其他加&连接起来参数
	    	}
	    	prestr.append(key + "=" + value);
        }
	  	return prestr.toString();
	}

猜你喜欢

转载自blog.csdn.net/qq15577969/article/details/112927286